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)]`
While you're at it, the return types of `errno` on unix and windows should be the same, not different. Could you change windows to returning an `int` as well? I think that most consider `errno` as being a signed integer as opposed to an unsigned one.

Additionally, `set_errno` for windows would be updated to take an `int` instead of a `uint`.