Updated to build under MacOS as well.

MacOS has one slightly different name in the memory-mapped file interface.
Instead of MAP_ANONYMOUS, it defines MAP_ANON. So there's a #ifdef around the
two calls that use that, linking either the MAP_ANON or the MAP_ANONYMOUS
versions.