* Made xml_file_loader (and flat loader) take a backend instead of a context.
  They create and manage their own temp contexts internally.

* Build/Decom scheduling info is now recorded by the context after scheduling
  with the timer - this prevents bad data from being recorded if an exception
  is thrown by the timer.

* renamed Recorder::close to Close. The Close method now basically resets the
  recorder so it can be used again after Closing (although backends will need
  to be added again).

* Updated all backends to flush buffered data when their destructor is called

* Renamed recorder backend Close method to Flush.  Backends are now expected to
  be functional after a call to Flush.  Their destructor is now their Close
  method. Recorder doesn't "close" backends anymore.