Add support for populating product branding info.

If a ent cert with 'os' attribute is installed,
ie, an entitlement cert for a RHEL branded product,
populate /var/lib/rhsm/branded_name with the
product name.
make it more clear this is for RHEL branded ents

Also move the formatting into entbranding.Brand()
Move all branded product logic to entbranding

certlib just knows to creating a BrandingInstaller
and run it.

Install all entitlement certs, then run the branding
info install so we can catch dupes.

Add test cases, add Product 'os' attribute to stubs.
Update branding on cert sorter dir moniter event

Check current branded name to verify we dont need
to update it.

Make cli import start up a cert sorter before
writing certs, to trigger brand checks, since
'import' does not use the certlib ent cert
installing path.

Add more logging, more tests.
Add branding support to ent cert importer.

cli "import" and the "Import Certificates" gui
use managerlib.ImportFileExtractor for writing
import entitlement certificates. Add support
for get_cert() to get the EntitlementCertificate
object.

Add calls the entbranding.BrandInstaller to places
that use ImportFileExtractor.
Add BrandPicker and Brand base class.

BrandPicker is responsible for finding any brand
info. Current version does this based on the passed
in ent certs, and the installed products. It could
be extended to check the candlepin server for
info.

Brand base class is to hold the brand compare logic.
More entbranding test cases.
Allow multi ents that provide identical branding

If we get more than one entitlement certificate that
provides the exact same branding info, allow it. This
is the case for two overlapping entitlements certs
for the same product for example.
More entbranding logging and testing.