Exception handling for item writes

The goal is to give plugins the opportunity to prevent beets from writing an item’s file.

In addition we have to handle exceptions in the `item.write()` method uniformly during user interaction (i.e. the `import`, `write` and `modify` commands).