Break out TemporaryJobsTest into separate classes

We had a bunch of test classes stuffed into TemporaryJobsTest. Instead,
refactor the common functionality into TemporaryJobsTestBase and put each
class into its own file.

This also helps performance, since each separate test class can be run on
its own thread with forked execution.
Lower timeouts in tests: 10 minutes -> 200 seconds

Build systems like CircleCI and TravisCI tend to get upset when we don't
print any output for 3+ minutes. Also, any operation not completing for
that long is usually a sign that something went wrong.

Instead of just waiting until the build system times out the build, lower
our timeouts to under 3 minutes. That way we'll fail fast and see hwere
things are too slow or going wrong.
Listen for SIGINT/SIGTERM in test containers

The containers we start for a lot of our tests just run a simple loop:

  while :; do sleep 1; done

That loop doesn't care about SIGTERM, so all `docker stop` operations would
take 120 seconds (the timeout before we SIGKILL the container).

Instead, change to this loop, which respects SIGTERM and exits nicely:

  trap 'exit 0' SIGINT SIGTERM; while :; do sleep 1; done

This speeds up all tests that explicitly wait for a container to stop.
CircleCI: Use default JUnit parallelism

CircleCI should be able to handle parallelism.
CircleCI: Change logging level from WARN to ERROR

The WARN level just spewed way too much stuff to be useful.
Optimize & reorder test imports after refactoring
Merge pull request #272 from spotify/rohan/fix-tests

Refactoring & performance improvements for tests
Fix bug where JobStatusCommand can throw NPE

This could happen when getting host status. We first get a list of all
jobs, then the status for each job. If a job was deleted between those
two steps, we would throw a NPE when trying to process its status.

-RN
Fixed bug where 'helios status --host' would sometimes throw NPE
Use docker-client 2.6.4

-RN
Use docker-client 2.6.4
Contains a fix for connection pooling:

> By default, the Apache HTTP client will only use two connections per
> server. Instead, we want to use all the available connections in the
> connection pool (20). This is to prevent issues where requests get blocked
> while waiting on Docker to pull an image, stop a container, etc.
Break out TemporaryJobsTest into separate classes

We had a bunch of test classes stuffed into TemporaryJobsTest. Instead,
refactor the common functionality into TemporaryJobsTestBase and put each
class into its own file.

This also helps performance, since each separate test class can be run on
its own thread with forked execution.
Lower timeouts in tests: 10 minutes -> 200 seconds

Build systems like CircleCI and TravisCI tend to get upset when we don't
print any output for 3+ minutes. Also, any operation not completing for
that long is usually a sign that something went wrong.

Instead of just waiting until the build system times out the build, lower
our timeouts to under 3 minutes. That way we'll fail fast and see hwere
things are too slow or going wrong.
Listen for SIGINT/SIGTERM in test containers

The containers we start for a lot of our tests just run a simple loop:

  while :; do sleep 1; done

That loop doesn't care about SIGTERM, so all `docker stop` operations would
take 120 seconds (the timeout before we SIGKILL the container).

Instead, change to this loop, which respects SIGTERM and exits nicely:

  trap 'exit 0' SIGINT SIGTERM; while :; do sleep 1; done

This speeds up all tests that explicitly wait for a container to stop.
CircleCI: Use default JUnit parallelism

CircleCI should be able to handle parallelism.
CircleCI: Change logging level from WARN to ERROR

The WARN level just spewed way too much stuff to be useful.
Optimize & reorder test imports after refactoring
Bulk Job Status fetching

This turns an operation making N+1 requests to one
that makes only 2, which should speed things up significantly as
the number of hosts increases.
Clean up some warnings
Add support for specifying resources for a container
ResourcesTest: Only run if Docker supports limits

Check if Docker supports the limits we are trying to set (memory, swap),
and only run if it does.

This requires docker-client 2.6.5, which includes Info.memoryLimit() and
Info.swapLimit() for checking whether the limits are supported.
Merge branch 'pr/259'

Closes #259.