Added progress reporting and other refinements

SyncLibraryTask will still need to be refactored so it can perform more
tasks at the same time.