Addition of serverside caching (addresses Issue #1)

Requests that should be cached use the `@cache` decorator and requests that can
invalidate the cache use the `mark_dirty` function and pass in the path for the
requests that will be marked dirty.  This could get hairy, so probably will need
to rethink how the dirty marking is done.
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.