Experimenting with having the router spin up the dependent processes.
Continued experiments with running dependencies.
Continuing to experiment with local config stuff.
More messing around with config changes. Messy work in progress..
More tweaks for running everything through supervsior:

- Pull in all the config from the gatekeeper.
- Experiment with using Puma for serving the Rails app (for exploring
  phased restarts as well as making it more feasible to switch to
  JRuby and threading later on).
- Add buffering to nginx logging (should theoretically reduce disk IO).
- Improve supervisord logging setup.
Merge remote-tracking branch 'origin/master' into config
Run all processes via supervisor and get tests running against this

This still needs lots of cleanup, and the test suite is a little finicky
(supervisor isn't properly being killed off on finish), but tests are at
least finally running against the entire stack (nginx, varnish,
gatekeeper), so we're slowly getting somewhere.
Add more complete tests for the OPTIONS NodeJS vs Varnish bug.

OPTIONS requests were failing when NodeJS was proxying them to Varnish
(since NodeJS mangled OPTIONS requests without bodies and Varnish
no-likey). This was patched in the gatekeeper app, but this is a better
full integration test to ensure all HTTP methods work with the full
stack in place.

See:
https://github.com/NREL/api-umbrella-gatekeeper/commit/e8745f2721a8e75ad687fc1459efb045550bf664
Add testing for backend keepalive settings. Cleanup rate limit config.
Improve supervisord starting and stopping.

On boot we now wait until the processes are actually listening (eg,
waiting for elasticsearch to become available and responding).

Supervisor should now also shutdown cleanly in most cases so we don't
end up with extra processes running.
Experimenting with using Eye for process supervision.
Removing Eye process manager experiments.

Eye seems interesting, and allows for some things a little bit easier
than supervisor (chaining restarts, monitoring check), so it might be
worth exploring again, but for now I think we'll stick with the more
established supervisor.
Better error handling for supervisor startup failures.
Update dependencies.
Setup gzip responses and implement tests for gzip behavior.
Initial move of logger code from the gatekeeper to the router.

This needs to be redone, but this is a starting point to simply move the
old functionality to the new project as-is.
Fix logging so it actually works.

It got broken due to upgrades to the elasticsearch client as well as
overall configuration tweaks in this branch.
Messing around with logging tests. Not functional yet.
Upgrade to Varnish 4 to fix streaming gzip issues.

There was a somewhat sporadic issue under Varnish 3 with streaming
gzipped responses. https://www.varnish-cache.org/trac/ticket/1220
Enable gunzip module in nginx to work with backends that always gzip.

I'm not sure how important this behavior really is, but we were already
testing for it, but it turned out Varnish is what was providing this
behavior for. It didn't seem super clear in Varnish's docs that it would
actually support this behavior, so shift this behavior into explicitly
into nginx. This is so we can experiment with other HTTP caching layers
that doesn't supply this functionality (Traffic Server).