Added several interface improvements.

- Reworked repository interfaces to provide co/contravariance.
- Reworked OAuthProvider to throw exceptions for invalid requests.
- Changed System.string to System.Uri where appropriate.
- Changed some things to comply with Microsoft Code Analysis (FxCop).