Create C files for platform-specific functions

Create source files in which to put any platform-specific functionality,
so we can keep the rest of the code platform-independent. We categorise
the supported platforms as follows:

- Unix
    - Linux
    - Apple (iOS and OS X)
- Windows

For general operating system stuff like filesystem access, Linux, iOS,
and OS X are able to share common code, as they're all POSIX-compliant.
So anything that works across these should go in Unix.c.  Higher-level
functionality such as working with image files, it will be necessary to
use separate code for Linux to what is used on iOS and OS X.

As an example, iOS and OS X provide the ImageIO library which allows us
to, among other things, determine the dimensions of an image file. This
is not available on Linux however, where an alternative will have to be
found.

All four files (Apple.c, Linux.c, Unix.c, and Win32.c) are included in
the projects generated by CMake. The reason for this is so that you can
access the code easily in your IDE of choice, e.g. when adding or
changing function prototypes where you need to ensure they are
consistent across the files. Conditional macros are used to ensure the
contents of each file is only compiled on the appropriate platforms.