Add byte, byte string, and raw byte string literals.

See #14646 (tracking issue) and rust-lang/rfcs#69.

This does not close the tracking issue, as the `bytes!()` macro still needs to be removed. It will be later, after a snapshot is made with the changes in this PR, so that the new syntax can be used when bootstrapping the compiler.
This is very very similar to the `match` for parsing a normal `'`, could they be factored to share the code? (I think the only real difference is if they accept `\u..`, `\U...`?)