libc: VirtualAlloc and FileMapping bindings
libc: add errno values
os: introduce cross-platform MemoryMap bindings

Basically, one may just do:

    MemoryMap::new(16, ~[
      MapExecutable,
      MapReadable,
      MapWritable
    ])

And executable+readable+writable chunk of at least 16 bytes size will be
allocated and freed with the result of `MemoryMap::new`.
auto merge of #7528 : indutny/rust/feature/memory-api, r=cmr

@cmr this is still WIP and I haven't tested it on windows, but anyway.