FIX: When building URIs via Hash, Addressable expects URI#new and URI#parse to provide hash keys as symbols. One example of a little known occurrence where this would cause an issue is accessing the Google API via Google::APIClient::FileStorage, which stores and retrieves files as JSON - the keys of which are loaded in by the Google-Api-Client gem as strings. Here, we ensure that our options meet the format Addressable expects. The authorization/credential_uri= methods have been cleaned up a bit as well.
Paranoid normalization of user input; less silent errors as Addressable would simply not append options if it receives any as string parameters rather than symbol parameters. Refactored the multiple Enum#inject()'s that were found on update\! and update_token\!. Test coverage is ample from the current suite in spec/signet/oauth2/client_spec.rb. All tests pass.