Add path argument to item.write()

Symmetrical to item.read(), this allows us to update the tags of files that are
not in the library. The motivation was this issue [1].

The commit also includes a nasty hack in the plugin code that prevents breaking
other plugins.

[1]: https://github.com/geigerzaehler/beets-check/issues/1
Add tests for item.write() custom path
Merge pull request #652 from geigerzaehler/item-write

Add path argument to item.write()