Define char::ReplacementChar as U+FFFD
First pass at encoding support

Create a new module `encoding` that defines the Encoding trait and
related conditions.

Implement UTF-16 as a sample encoding.
Implement size_hint() for UTF16Encoder/Decoder
Add convenience methods .encode_as(), .decode_as(), and .reencode()

Implement .encode_as() on &[char] and .decode_as() on &[u8]. These are
just sugar for dealing with the ugliness that is
v.iter().transform(|x|*x).

Also add .reencode() on &[u8].