(maint) Remove unused exception class
(maint) re-indent file
(#21307) Refactor WatchedFile class

The watchedfile class was extracted from another location but had some
remnants of old behavior. In addition it would treat missing files as
always changed, which could lead to undesired behavior around trying to
reload missing files.

This commit refactors the WatchedFile to use a single timestamp value
and assume that the file is unchanged if the file timeout period has not
elapsed.

In addition this commit also treats file absence as a valid state.  If a
file is missing between two checks it will be treated as unchanged.
(#21307) Pull apart many parts of logic for WatchedFile

The WatchedFile class had several intertwined pieces of logic: when to
update, what a changed file is, when a changed isn't yet known. This
unravels it into individual parts. Overall the code got larger, but the
pieces are more specialized now and have a name that calls out what is
being done.
Merge remote-tracking branch 'zaphod42/issue/master/21307-missing-files-treated-as-changed'

* zaphod42/issue/master/21307-missing-files-treated-as-changed:
  (#21307) Pull apart many parts of logic for WatchedFile
  (#21307) Refactor WatchedFile class
  (maint) re-indent file
  (maint) Remove unused exception class