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.