Introduced concept of JsContext to JsRunner

A JsContext basically keeps track of objects that
are to be put in scope when a JS function is called.

There are 2 types:
- ArguementJsContext: Provides objects 'as is' defined
by the specified name.
- JsonJsContext: Provides objects as a single JSON string,
unless told they are not serializable.

NOTE: Compliance rules are completely busted.
Fixed JSON serialization in JsonJsContext
Fixed a bad refactor

Should have been using the argument that was
being passed in to check if serializable.
First draft of returning JSON from compliance rules.
Removed DoubleCheckedLocking checkstyle module.

Has been removed in checkstyle 5.6.
Get compliance rules reading JSON output.
More JS object usage through Compliance namespace.
Fix bad vim paste.
Compliance JS now passing status on date for stacked scenario.
Refactoring determineComplianceUntilDate

- Removing reliance on helpers.
- Pass entire set of entitlements to the rule call so
  that they do not have to be looked up for each recursive
  call.
New method for augmenting JS pool objects.
Fix some serialization issues and store entitlements again.
Fix a string comparison.
Iterate keys not the values

Fixed an issue where we were iterating array of entitlements
when we were supposed to be iterating and checking existance
of the keys (product_id)
Properly look up stacking_id product attribute

Missed by a refactor. Should have been calling the
getProductAttribute method attached to the pool
JS object.
Fix mock serialization issues and add context to other Compliance methods.
Fixed an invalid date in the test.
Fix several date related compliance tests.
Introduce new versioned rules file.

Old file left for manifests that can be imported in older Candlepin's,
but should now be deprecated. Restored master's version of this file to
reverse the work done on compliance namespace.

Created new rules.js file with ported compliance namespace.
Fix remaining tests for compliance namespace port.

All tests should now pass, and compliance namespace should be fully
functional.