base: File API

Missing:

* Binary files
* File removals
* Unit tests
* Docs as docbook, fix typos etc
Are there two steps for watching a file and then subscribing to its handler? Make sense to combine these, and pass the handler to watch()?

Also rather than unwatch() I would suggest returning an object from watch(), on which .remove() can be called. See how dbus client.subscribe() and client.watch() work.