Separate out derived value assignment.

  - Persistent attributes tend to be handled quite differently (init
    is never called), thus the derived values may never be properly
    assigned.
Prevent getOfflineTimestamp from dying in a fire

  - There will be situations where fuel is not instanced correctly.
    Rather than dying in a fire and dealing with exception I am going to
    get it to return -1 when this kinda of failure happens.
  - Shouldn't _normally_ happen anyway.  Yes I am being defensive here.
Implement loading/persistency.

  - Now possible to reinstantiate a saved tower and fuel that was stored
    in the sql backend.
A test involving two towers.