Refactor command status (part 1)

This is the first step of refactoring work to remove the overloaded "cmd/status" field in the `tile_protocol` object and replace it with separate fields for:

* Request type - so that having a response doesn't drop the information about what type of request it was.
* (optional) Response type - with the ability to distinguish between missing and error results.
* A flag to indicate dirtyness, so that we can communicate a last modified time as well as dirty/clean status.
* A flag to indicate that a tile is not generatable in storage, so that we can get rid of the abomination that was `0xDEAD`.
* An explicit priority level, so that we can control priority independently (and in more than 3 steps) from request type.

Additionally, there are some features which are planned but not used in this PR - they will be used in a later PR.

* (optional) Trace ID, so that we can trace single requests through the system when debugging problems or collecting performance statistics.
* Metatile size, so that we don't have to have two copies of each storage object to handle both metatile and non-metatile requests. In other words, get rid of the abomination that was `m_metatile_mode`.