Bring master up to speed with 0.9.x

Hot on the heels of https://github.com/graphite-project/carbon/issues/312 is this PR which re-integrates 0.9.x into master. There were a few merge conflicts, but far less than I'd feared.

It would rock if someone else could take this branch and test it out some more. My initial tests (start a few caches, write data, verify data) all pass, but are rather simplistic.
`flake8` can be configured in `setup.cfg`. See what's done in graphite-web, it ignores errors related to e.g 2-space indents or minor whitespace issues but the lint builds fails on missing imports things that are more critical.

Running `flake8` and adding ignores is a nice approach IMO. Once that is set up it also allows incremental cleanups: remove an ignore, fix all occurrences for that error, repeat :)