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 Rust's `int` type is ever smaller than a C compiler's `int` when compiling for the same target, then either the C compiler is broken, or Rust is. More generally, under that circumstance, I think we'd have more issues than just `errno`.

Given that, and since `errno` is not defined to be any specific bit width but instead defined to be the C `int` type, I think it's much more natural to expose `errno` from `std` as `int` instead of trying to claim it's some particular bit width. Yes, it's not a perfect match, but it seems like a better choice than `i32`.