Added new fields to tile protocol protobuf definition.
Added dirty flag for tile protocol to replace nasty last_modified hack.
Moved a bunch of code out of the header into the cpp file.
Better comment on `tile_protocol` upgrade field.
Added extra properties to `tile_protocol` and set them by function.
Removed status/command field from `tile_protocol`.

This is now mediated by two functions: `status()` to get the old
`protoCmd` equivalent of the tile's status and `set_status()` to
update it. This allows the `tile_protocol` structure to change
without changing a lot of the rest of the code, which we can now
refactor piece by piece.
Converted choice storage object.
Converted composite thread storage object.
Converted disk storage object.
Change test assertion messages to make it clearer what's being asserted.
Converted expiry storage object.
Converted HTTP storage object.
Fixed bug in deserialisation - need to set other parameters before calling to set status.
Converted static and LTS storages - there was a dependency between them.
Break out fetch/store as two different request types.
Converted tile storage Python bindings.
Converted transcode storage object.
Added explicit default for last modified.
Implemented serialisation and deserialisation of new attributes. Converted disk storage.
Remove 0xDEAD hack.

Some tiles are not "generatable", which means that they come from
a source which this Burritile cluster isn't able to render. For
example, pre-generated aerial or terrain tiles. In this case, and
upon failure, the last modified timestamp was set to 0xDEAD.

This patch removes the need for that hack by adding an
`is_generatable` flag to the `tile_protocol` object, which
indicates the same thing without the need for egregious hackery.