RFC: Add OsUnknown as a target operating system

First step in being able to build libstd against newlib (or other compatible c-library) for embedded targets. This enables a target triple to be specified of the form `*-unknown-*`. Next step to getting libstd to build is adding weak linkages or `#[cfg(target_os = "unknown")]`. Newlib provides libc, libm and libstc++ (exceptions too) and can be ported to other platforms by implementing 17-18 basic functions to interact with the OS/hardware.

This pull request just adds the unknown os target to librustc. The only additional change is that it ignores `#[crate-type = "dylib"]` in crates (as unknown OS cannot support dynamic linking). If dylib is specified using the `--crate-type` flag then an appropriate error is produced.

Next steps would be getting libstd to build a rlib, getting a binary to link, and writing a test that makes sure libstd can be built.