Cache Control and Conditional Get

Based on https://github.com/lotus/controller/pull/14

A lot of code improvements, more tests and conditional get.

cc: @jodosha, @karlfreeman