Added CredentailsInterface to allow the use of other Credential Objects

Why?
Currently, it's not possible to write your own Credential's Class to pass into your service provider.

As an example Xero (xero.com) provide a 2 legged private oAuth (v1a) implementation, where both the consumer and user credentials are the same, and all requests as signed with RSA-SHA1 using public/private certs on each end.