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?
Do you still want to keep this?

I agree with your comment about irrelevance of calling this function with an empty required scope...