Authentication Refactor

- Created an abstract class that defines the Authentication interface based on the old authentication class we will need so we can always get a valid token
- Created a new module for authenticating with Keystone Client, no authentication URL is defined
- Created a new module for authenticating with Keystone Client against Rackspace Identity, simply provides the DC aware Identity authentication URLs
- Removed the old authentication class

Note: not yet tested
Module Resolution

- Apparently it doesn't like importing the openstack and rackspace authentication modules into the __init__; this fixes it all
Testing & Bug Fixes

- Adds initial round of tests (44% coverage)
- Fixed shell entry so that we can specify an authentication module via command-line
- Enhanced the incoming user configuration json data to be able to auto-detect what parts are provided
Documentation Improvement

- added a little more documation to clarify a parameter
More Testing

- More testing 49% coverage
More Testing

- Add tests for AuthExpirationTime
More Testing

- Completed testing of the Auth module
Clean up

- Cleaned up the tests by consolidating some duplicated code (namely the keystone version data) and removing some code commented out
Merge branch 'master' into refactor_auth
Merge branch 'master' into refactor_auth

Conflicts:
	setup.cfg
Bug Fixes

- keystoneclient.client.Client() does not work properly at least with Rackspace Identity; it also appears keystoneclient itself doesn't use it for keystoneclient.shell. Rather everything seems to hardcode a Keystone version, in this case keystoneclient.v2_0.client.Client. So we'll do likewise for now until the discovery stuff is fixed.
--- Updated usage of keystoneclient.client to keystoneclient.v2_0.client
--- Updated mocks to mock out the keystoneclient.v2_0.client
--- left existing mocks in place so it is easy to revert, and documented the changes and why
--- keystoneclient.v2_0.client.Client can throw an exception on creation; as a result get_client needed to be try/excepted and a new test added
- bugfix: discovered a bug in the deuceclient.shell that failed to capture the correct username
- bugfix: apikey is not supported via keystoneclient at this time; though we could probably monkey patch it to do so
- bugfix: some parameters were in the incorrect order
--- updated to be in a uniform order
- bugfix: AuthToken is no longer a property b/c properties don't work well with abstract base classes
Converted AuthToken() back to property AuthToken

- Properties do not play well with Abstract Base Classes so AuthToken as a property cannot be derived
--- Changed the abstractmethod from AuthToken to _AuthToken
--- Updated base class's AuthToken to call _AuthToken which by default is not implemented
--- Converted AuthToken back to property and updated all references accordingly
Testing: Add testing for Command object

- Bug Fix: Add the User-Agent headers as part of Re-Init so that they actually get added and remain part of the header set
- Add tests for the SSL vs non-SSL modes of the object
- Add test for the properties on the object
Cleanup: Remove MossoID

- Deuce doesn't need the MossoID, it will retrieve what is needs from the service catalog itself
API Update

- Added AuthTenantId to AuthenticationBase as Deuce-Client expects the property in order to get the Project ID. This just makes the API contract more apparent than that it was done using OpenStack/Rackspace Auth Engines
Testing API: FakeAuthenticator

- Add a fake authentication class for the testing functionality
Testing - Deuce Client

- Bug Fix: Deuce client did not HEAD a vault to determine existence
- Bug Fix: FakeAuthenticator
- Enhancement: Added a multitude of tests for deuceclient.client.deuce, now at 88% coverage
- Added httpretty to help with HTTP Testing
Testing - Deuce Client

- Rest of the functionality tested
- Notable functionality missing:
--- Listing Vaults
--- Finalizing a File
--- Non-Auth Auth
- Notable Improvements:
--- Structure; callers need to know too much about the Deuce API
Bug Fix: Auth w/o Auth

- Re-enable use against an OOB Deuce Instance by providing an auth plugin that doesn't really do anything.
Merge pull request #3 from BenjamenMeyer/refactor_auth

Refactor auth - since we have the NoAuth Auth Module this should not hold us up; bugfixes can be a new PR.

We need to move forward.