Got rid of variant::nothing.

Use std::experimental::optional<variant> to represent optional variants.
Got rid of token_type::nothing.

Use std::experimental::optional<token> to represent optional tokens.