initial version of the mbsync plugin

this plugin provides a faster way to query new metadata from
musicbrainz. (instead of having to 're-import' the files)
Currently it lacks all forms of documentation and will only work for
album queries. not really tested so far so be careful
mbsync: write metadata to files...
mbsync: documentation
mbsync: add support for singletons

I can't really guarantee this works right now since I have no singletons
in my collection to test it
mbsync: update docs
mbsync: a little refactoring
mbsync: use SingletonQuery for item updates
mbsync: docs/changelog

As discussed on #115, this has the "reimport" docs refer to the mbsync plugin.
mbsync: split album/item functions; shorter txns

The main change here is to use shorter transactions -- one per matching entity
-- rather than one large one. This avoids very long transactions when the
network happens to move slowly.
mbsync: use ID lookups instead of full match logic

This change uses _album_for_id and _track_for_id instead of the full
autotag.match.* functions. This should be faster (requiring fewer calls to the
MusicBrainz API) while also being more predictable. It also won't, for
example, use acoustic fingerprinting even if the chroma plugin is installed.

Finally, this change catches the error case in which MBIDs are erroneous. This
can happen, for example, if the user has some track MBIDs left over from
before the NGS transition.
mbsync: don't write tags if import.write is off

This will avoid surprising users with import.write turned off.
mbsync: avoid spurious stores/moves

As _print_and_apply_changes itself does for items, we now shortcut
modifications (metadata and filesystem) for albums when no changes are
required for a given album. This avoids effectively doing a "beet move" on an
album even when nothing has changed.
mbsync: fix redundant album art movement

Since we explicitly move album art later in the process, implicitly moving it
with items can cause a double-move (and thus a "file not found" error).