Adds ability to define tile sub-cells in mod.yaml

Implements #6086 - Number and offsets of SubCells should not be hardcoded.
There's two parts to this:
* The exception message doesn't match the check you're doing (the inverse of `<` is `>=`, not `>`).
* We don't want them floating in the air for the same reason that we don't want x,y values greater than 512.  The engine will allow these values, but they will cause unexpected results in game.  It is inconsistent to restrict X and Y to "sensible" values, but not Z.