Performance improvements when selecting best pools

- get product attributes from pool, instead of looking up the product.
- created custom guice scope CandlepinSingletonScope to allow single
  per request/job injection.
- inject Product cache using CandlepinSingletonScope to help with product
  lookups.
- Renamed ReadOnlyProductCache as it now returns Product
Removed unnecessary product lookup for RO Pool provided products.

Provided products will not have the attributes that are checked
in the rules, so we set them to empty.

Removed the test case as it was not correct. Provided products
will not have the attributes set.
Adding comments to classes.
Removed unnecessary comments
Merge pull request #51 from candlepin/mstead/custom-scope-pool-attr

Performance improvements when selecting best pools
Throw exception when generating V1 certificates with too much content.

Limit is somewhere around 200 content sets, so we're going with 185 to
be a little more safe. If an entitlement would contain more than this
number of content sets (after environment filtering) we throw an
exception and abort the entitlement.
Filter pools with too many content sets from V1 autobinds.

Had hoped to do this in rules but the information is not available, and
exposing it would introduce an API change which would break on all past
candlepin releases when it recieved the new rules in a manifest or the
like. (unless we introduce some form of rules/JS API versioning)

Because the actual exception we throw when a system tries to use such a
pool is already in core java code, I decided to do this in java as well.

The pools with too much content for V1 consumers will still appear in
the list of available pools, they just won't ever be used in an
autobind/dry-run scenario. This is a PM request that the customer we
prompted to upgrade their client if they try to use such a pool.
Remove attribute specific select best pools code.

This was unused, select best pools has always been just a single call
to a single rule, and attribute specific rules would not work. Cutting
this down to just call the global to remove a bit of product/attribute
iteration.

Conflicts:
	src/main/java/org/candlepin/policy/js/entitlement/EntitlementRules.java
Performance fix for select best pools.

We were looking up eng products from the product service, which is
completely pointless, and then passing in product objects for the rules,
which only ever use the product ID, which we had before we did the
lookup.
Fix certv1 content filtering on autobinds.

Mistakenly coded to only check for too much content on marketing
products, which can't have content. Needed to be checking each provided
product.

Because we could now filter down to 0 pools in the select best pools
method, I had to move the exception that was thrown one layer above in
as the client tools expect this behavior when nothing can be
successfully autobound.
Test / codestyle cleanup.
Merge pull request #57 from candlepin/dgoodwin/certv1-size-final

Dgoodwin/certv1 size final
Pull curator classes out into their own package.

We have a lot of models and curators. Splitting them up makes it easier
to view.
Merge pull request #55 from candlepin/jbowes/curator-package

Pull curator classes out into their own package.
fixing compile error, clearly 2 acks wasn't enough.
Merge branch 'master' into alikins/pool_criteria_cleanup

Conflicts:
	src/main/java/org/candlepin/controller/CandlepinPoolManager.java
	src/main/java/org/candlepin/model/PoolCurator.java
	src/test/java/org/candlepin/controller/PoolManagerTest.java