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.