Fix apicrawl task.

Buildr always runs in the top level of the source tree.  The ApiCrawler
task was previously always trying to write out the JSON to the `target`
directory but since we have reorganized the code, the top level no
longer has a `target` directory and the ApiCrawler would fail when
trying to open the output file.
clean up some of our hash code methods
Merge pull request #681 from candlepin/awood/apicrawl_fix

Fix apicrawl task.
Pretty print API JSON to make diffs easier to read.
Merge pull request #682 from candlepin/ckozak/hashcodes

clean up some of our hash code methods
Merge pull request #683 from candlepin/awood/pretty_api_json

Pretty print API JSON to make diffs easier to read.
1095417: Migrate entitlement from one distributor to another
Merge pull request #685 from candlepin/wottop/ent_migrate

1095417: Migrate entitlement from one distributor to another
1129740: truncate long facts
Merge pull request #688 from candlepin/ckozak/truncate_facts

1129740: truncate long facts
started slimming our footprint
track entitlement ids to refresh
fix tests, use multiple transactions
check for null subs/ents when we find by id