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 geigerzaehler/beets-check#1.

The commit also includes a nasty hack in the plugin code that prevents breaking
other plugins.

I'd like to ship this with 1.3.4 so my plugin will work with the upcoming beets release.