Add SingletonImportTask

The goal of this class is to eliminate all checks for `task.is_album`. This is
already accomplished for the methods. Next, we want to tackle the plugin
stages.
Add task.apply_metadata() method
Album tasks always record their progress
Add SentinelImportTask and move code into it
Make _resume() session local and refactor resume in read stage

Functionaly, this should not change anything.
Refactor finalize stage into Task class
Refactor task.finalize()
Merge singleton and album lookup stages
Merge duplicate detection into find_duplicates method
Add resolve_duplicates stage
Make _infer_album_fields a method
Merge show progress and item progress tasks
Add manipulate_files method, store item during finalize
Rename methods to better convey their meaning
Add do_remove_method
Update library after changing item paths
Refactor logic for removing duplicate items
Add 'add' method to tasks, remove album_id property
Add 'remove_replaced' method
Clear IDs in query stage