Various changes

* The RedisBuffer is limited to a maximum size. It will periodically flush its
buffer, writing everything to Redis when it reaches the maximum size.
* Because the RedisBuffer is periodically cleared, all zone responses
are stored in a separate list.
* Analyzer produces a scatter plot instead of a list plot.
Move web routing functions to separate module
Add support for multiple tenants/projects