Minor progress bar tweaks

- The default progress bar is only used if `True` is passed in to
  the `ProgressTracker` (or the `wrap_with_progressupdater` function).
- If `False` is passed to `wrap_with_progressupdate`, `NoProgressBar`
  is used.
- `ProgressBar`s now accept a string which represents the task being
  tracked. It selfishly defaults to "Simulation", as that's what we
  use it for, but it'll be handy to have this if we ever track the
  build process also. The default message when a progress bar finishes
  is now "{task} finished in {time}" rather than "Done in {time}".
- The `AutoProgressBar` now updates as usual if the task is finished.
  This is so that, even if the bar isn't initially shown and updated,
  there's still a handy message that the simulation finished.
SQUASHME: wrap_with_progressupdater errors on bad type