Fixes for puppet+vagrant to have dev/prod modes

The lines at the top of the Vagrantfile dictate which environment to use, these then
correspond to variables in the puppet manifest(s) that will allow installing other
things for dev purposes (such as a better shell, fixing terminal support, etc).

The pip requirements have been split, only the prod ones are in requirements.txt,
the stuff for development (unit testing, linting, etc) are all in the
requirements.dev.txt file.
Caching tweaks

Some stuff was super broken, fixed that stuff and got a test working, tests are
running real slow on my machine.  Unsure if this is caused by the caching or there
is something wrong with my setup.
Merge branch 'master' into caching
Fixed a bunch of stuff with caching and wrote tests

There are now a few caching specific tests in the test suites, this involves adding
the ETag to the headers for requests to test for a `Not Modified` response.