Added PersistenceManager class for managing saving through
sentinel files.
Switched app over to using sentinel file based persistence.  Removed 
the json logfile code it replaces.
Renamed PersistenceManager to ProgressManager and renamed 
methods get_processed and record_processed to get_done and
record_done.
Added ability to lock and unlock files to persistence module.
Added ability to record items at specific indices in a file as processed
(record_index).

Created requires_lock decorator, and now record_done and 
record_index use it to require that the caller owns the lock on the
specified file.

Clean can now take a list of suffixes which it should clean (defaults to
all suffixes used in the module).
Moved state for file currently being processed from the AbstractModel
class to the AstromWorkload class.  The AstromWorkload will lock
and unlock files as they become its current file.

Unlocking a file will not through an error if the lockfile does not exist,
because it was probably cleaned up when recording the file as 
finished processing.
Resolved merge conflict.
Updated merged-in test case for new persistence API.
Made creation of the lock file atomic using lower-level os operations.
Created VettableCollection class to better abstract the vettable items.
The index of items is now retrievable, which will enable writing the 
index to .PART files for persistence.
AstromWorkload now provides record_current_file_done method
instead of record_done method which requires a filename.
The model now uses the persistence module to record when an item is 
accepted or rejected.  It doesn't not yet read these values back when
starting up.
Added is_done method to PersistenceManager to check if a specific 
file is done processing.

Changed get_processed_indices to return an empty list if it is called on
a file which has no .PART file, rather than throwing an error saying the 
file doesn't exist.
Calling record_done will no longer remove all locks in the directory.
History of recorded indices are now kept in the .DONE file after 
record_done is called so that get_processed_indices doesn't return an
empty list after the file is finished processing.
Recording a file as finished processing now happens when the last item
is accepted or rejected, rather than when trying to go to the next file.
Added integration tests for model persistence.
Moved a test from MultipleAstromDataModelTest over to the integration
tests because it relies on having actual persistence objects not mocks.
Also did a minor fix-up for some tests that failed after recent changes.
Minor refactoring.
Unlock the current file when exiting the application.