Fix storage format defaults, tuple format index scanning

This is #1429 with a rebase, small fixes and a bit of cleanup.

The default storage format is no longer lost when performing ALTERs and the default now also applies to sub-objects (e.g. table indexes).

Additionally, the Key -> Tuple -> Key transitions have now been fixed. Mostly sensitivity around joining 0xFF vs strinc, along with the normal Key surprises.