Move method to get list of installed products to ProductDirectory.
Fixing broken tests.
Fixing more broken tests.
Fixing still more broken tests.
Mock out call to os.path.exists.
Add unknown product status state.

Currently just used when we are disconnected, but eventually will also
be used if we're registered but cannot reach the server for too long.
Pass UEP object into CertSorter.
Merge branch 'awood/server-side-status' of git://github.com/candlepin/subscription-manager into awood/server-side-status
Hook up cert sorter's is_registered check.

Requires ConsumerIdentity, which led to a circular dependency, so this
is now moved into it's own module.

Tests updated to patch this as required so all product status doesn't
show up as unknown.
Add new identity module to spec.
Add unknown product state to CLI status map.
Parse compliance info from server.

This is the start of a major change where the client no longer is
responsible for complex red/yellow/green calculations and instead relies
on the server where this logic already exists.

In cases where the system is disconnected we will display that
entitlement status is unknown.

Also includes the beginning of a new dependency injection framework to
hopefully help us get around testing all the components of subscription
manager which constantly attempt to load things directly from disk or
use global singletons.
Get certmgr tests operational.
Remove find first invalid date code.
Use server side info for product date ranges.

In moving to server side status, we need to relocate the calculation of
valid ranges for installed products. This is also already calculated on
the server but unfortunately not in the compliance API call.

Instead we do a GET /consumers/uuid and extract the information from
this.
Remove release.py use of CertSorter.
Fix managerlib tests.

Adding dep injection support for the valid product date range
calculator.
Remove valid ents fact tests. (now removed)
Fix managergui tests.
Hookup dep injection defaults.