Now that we can run this project on linux, lets add some unit tests for the surfaces that don't.. This additionally changes delete to throw in most cases. I don't really see how masking these errors is ideal.
This target contains general useful OS related definitions or wrappers.