[impressions import] Explicit ImportRunner class, explicit controllable transactions via Batch.
[impressions import] Create an explicit ImportRunner class which we can fire when executing as a script.
[impressions import] (refactor: comments) Remove spurious comments and debug output.

[impressions import] Create an explicit ImportRunner class which we can fire when executing as a script.

 - Fix script check to match sinatra's implementation: https://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25

[impressions import] ImportRunner: Make connections an explicit step, separate from running.

 - So they can be done in other files.

[impressions import] ImportRunner#deploy_env: a helper for defaulting to the development environment

- for choosing which config/database.yml entry to read from, and when to blow away the impressions table.

[impressions import] (refactor: alphabetize requires) active_record < aws-sdk
[impressions import] (bugfix: typo) raw_impressions -> raw-impressions

[impressions import] Batch: Something we can use to rollback groups of active record inserts, keep track of errors, and keep counts of items.
[impressions import] RawImpressions#errchive to store a list of errors for a run.

[impressions import] ImpressionBatch#store_impressions to manage rolling back impression imports

- Logs

[impressions import] (refactor: whitespace) reindent aws_import.rb
[impressions import] fixup typo
[impressions intake] Goliath-based intake endpoint. Validates collection+json in post data.

[impressions intake] Add Goliath and many dependent gems to Gemfile and Gemfile.lock
[impressions intake] Add uber-s3 and dependencies em-http-request, em-synchrony to Gemfile.
[impressions intake] Make an adapter for storing and listing s3 objects for the server to use.
[impressions intake] Use UberS3 if it's available (so we can use fibers when running goliath)
[impressions intake] Create raw-impressions files with post data.
[impressions intake]  Add validations on pim_id.
[impressions intake]  Capture validation errors in a way where we can report them cleanly to the pim.
[impressions intake] Output PIM-status-flavored json. For consumption with existing libraries.
[impressions intake] (bug fix) Apparently ArgumentError#to_json produces "{}". Who would have thought?

[impressions intake] (reengineer) Show the key created by the upload.

- eventually it'd be nice for this to return a url.

[impressions intake] Some end-to-end tests.
[impressions intake] (bug fix) Require Collection+JSON documents to have collection.items as an array.