OAuth2::Client#initialize: Avoid mutating options hash

Users of this library may assume that the opts hash is not mutated by
the Client initializer. If they pass a hash of options to
OAuth2::Client#new and then proceed to use that same hash elsewhere
after the call returns, they may be surprised to find several keys
missing. Bugs ensue.

Prevent this scenario by deleting from a clone of the hash rather than
from the hash itself.
Test that OAuth2::Client#initialize does not mutate its options hash
Avoid mutating the `opts` argument to `OAuth2::Client#initialize`

Merge branch 'dont_mutate_opts'