Don't throw exceptions when the server returns something we're not expecting.

Some of our enum lookups would start failing when the server has been updated but the client hadn't.

Change UrlValue interface to be more explicit, so we can change behaviour depending on the context. toUrlValue is called only when constructing requests, so we can make sure people don't use the new "UNKNOWN" types in requests.

cleanup: throw UnsupportedOperationException in write() in the gson TypeAdapters.