base: File API

> Makes sense. I agree with having a second error callback. But it
> should be optional.

It is optional, but maybe not in the sense you mean.  You can just call
```watch(callback)``` but then you wont get error reporting.

> Do we also call the main callback with ```null``` content? Because
> this API should be usable without having a separate error handling
> function.

I see this as similar to jQueries ```...then(done, fail)``` construct.

A previous version of this pull request had ```watch(function (content,
tag, code, message) { })``` and would set content and tag to undefined
in case of error, but I found that to be less clear, actually.  Now it
would be ```function (content, tag, error) { }```, but still...