Sync the silo pulse rate with fuels.
Provide a method to derive current state

  - Based on fuel levels
  - Also allow the getTimeRemaining method to have the timestamp as
    optional, which will default to current time.
Doctest for silo material tracking.
Ability to remove silos.
Reinforcement handling

  - Putting a tower into reinforcement, stops silos from accumulating or
    depleting resources.
Expanding on the getState method

  - Should be able to deal with timestamp
  - Updating methods to rely on that instead.
Using getState within the silo buffers.

  - Derive the intended tower state for calculations of silo values.
Handling the exiting of reinforcement

  - Dedicated method to verify reinforcement exit (otherwise tower.state
    and tower.getState(timestamp) will have differing outputs), to
    better indicate strontium levels are properly (manually) restored.
  - Renamed setReinforcement to enterReinforcement to better reflect the
    process.
More reinforcement related test

  - Addressing an off-by-one error (the stateTimestamp is the moment the
    pos will exit reinforcement, i.e. when it will become online)
  - A more detailed tower reinforcement dealing with silos test case.