candlepin accepts reason structures from javascript and builds translated messages
refactored ComplianceReason, added StatusReasonMessageGenerator to help build messages
marked helper fields xmltransient
removed injector from ComplianceRulesTest, takes much less time now.
removed StatusReasonMessageGenerator setter from compliancerules, inject instead.  Added slash-separated subscription names in stack
fixed multiple subscription names
fixed getting non-compliant product names
added tests for StatusReasonMessageGenerator, fixed some problems in StatusReasonMessageGenerator
fixed style
rearranged StatusMreasonMessageGenerator setup helpers to be more generic
added test for installed products that aren't covered
Return compliance status reasons for Compliance namespace

- StatusReasonGenerator JS object now used to create reasons.
- ComplianceCalculator now returns a coverage JS object:
   covered: true/false if all attributes are covered
   percentage: percentage of attributes covered
   reasons: Any reasons why any of the attributes are not covered.
- Reasons are now provided for partial stacks, partially covered
  entitlements, and non covered installed products.
fixed more styling
Merge branch 'master' into compliance-status-reasons
changed messages slightly for QE
Merge branch 'compliance-status-reasons' of github.com:candlepin/candlepin into compliance-status-reasons
changed messages slightly again for RAM.  SUB covers xGB of yGB of RAM. (reoved word systems to be consistent)
status is valid if there are no reasons.  This makes the system yellow if there's a partial stack
fixed junit tests
cleaned up ComplianceStatus constructors