Implementation of UTF-16 console support for Windows

This implementation does have the minor issue of not handling things correctly when a codepoint is split across multiple writes or reads, but its better than not having unicode support at all.

Adds a Windows specific struct `WindowsTTY` in `libnative` and make `tty_open` create that struct on Windows.

This will fix #15028 for libnative.

![](http://puu.sh/9BO4c.png)
Prevailing style is to put each field on its own line:

```rust
Foo {
    bar: ...,
    baz: ...,
}
```