Add extra safety to unmarshaling to enums.

Removes existing TravelModeAdapter, AddressTypeAdapter and AddressComponentTypeAdapter, replaces them with generic SafeEnumAdapter.

Add tests that check converting UNKNOWN to a UrlValue throws an exception.
Cheeky. The style guide says no (but I say yes).