Add std::os::set_errno as a counterpart to std::os::errno

This pull request adds a `std::os::set_errno` function to allow rust to manipulate the thread's `errno` value.  In my particular case, I am needing to do this when interacting with a c-library I am wrapping.

Note I don't have rust building on a Windows platform currently so have been unable to test my implementation for `[cfg(windows)]`
If there are no guarantees about a rust `int` being larger than a `c_int`, then surely `errno` must return a `c_int`.  Certainly as it stands, `set_errno` taking a rust int makes no sense as it could be "too large" for the underlying call.

Personally, I think `errno` feels very much a "unixy" sort of call and would live happily in libc.