Big storage system changes, hopefully major bug fixes, collab and test branch

Test firmware branch compiles.

Not entirely sure that ‘contrib’ is needed, maybe pull request against test? Easier to keep two branches in sync than 3.