Some oauth client API tweaks

A couple of suggested tweaks to the oauth client API:

  * Create a new error hierarchy for scope errors, since they're not really a client *or* server error
  * Don't allow calling the low-level scope_matches function with required=None
  * Make client_id and client_secret be properties of the oauth.Client object

@leplatrem thoughts?
You could add a spec test here to make explicit that ``trade_code()`` can also take client id and secret as parameters