Gives Entities the ability to have Provider-specific implementations

This allows developers of a provider to expose specific behaviors of an entity to users of the library, while offering still offering the generic interface of an 'entity' for users that simply want a more general purpose item. Additionally, this fleshes out a bit of the Facebook and Twitter providers, the Storage engine, and fixes some issues in the OAuth1 implementation.