Slight refactoring:
+ Moved TaskTrackerTest to correct package
+ Moved newTaskId method into the only class where it's being used.
Changes to TaskTracker to store tasks as individual keys.
+ Changed method visibility
+ Store tasks as individual "variables"
+ Refactored taskIdUtils to be a singleton class that we can mock for testing.
+ Renamed started to created (to avoid confusion with /actual/ starting state, which we currently ignore).
+ Added logic to remove app if we are shutting it down with no tasks.
+ Removed use of remove method directly. Will call shutdown and only remove if there are no tasks left.
Tidyup:
+ ReconciliationFrequency is the wrong name. It should be ReconciliationInterval.
+ This is already implemented as part of the TaskTracker terminated method.
+ Rename method and add explanatory comment.
Added expunge logic and test.
Formatting and removed stats.