WIP: Refactor auth (Not Ready For Merge)

TODO: Still adding tests, presently 44% coverage mostly focused around Auth and low hanging fruit

- Converts the deuceclient.auth.auth.Authentication into a Abstract Base Class with a small interface called deuceclient.auth.base.AuthenticationBase
- Introduces deuceclient.auth.openstackauth.OpenStackAuthentication which implements authentication using OpenStack Keystone Client.
- Introduces deuceclient.auth.rackspaceauth.RackspaceAuthentication which implements OpenStackAuthentication with a default endpoint of Rackspace Identity
- Fixes shell to be able to use the new authentication engine
Think "fuzzy math".

Keystone uses "stale_duration". It's just a little extra time to add to the current time to determine if it will expire in the near future, typical value would be 2-5 (seconds). The default 0 value means "now".