Unify root bucket handling with nested bucket handling

Bolt.Tx now has method Cursor, so we don't need two code paths anymore.

We still need to use an interface to make *bolt.Tx and *bolt.Bucket
interchangeable, and a wrapper with fake Get/Put/Delete methods to
always satisfy code that wants to call those.

Also fix a copy-pasto where dir.go made sure Root implements
HandleReadDirer.
Explicitly forbid creating files at top level

Without this, simple shell usage like `echo foo >bar` gave no error
(because the file was not closed, as far as echo is concerned, and we
only Bolt Put on a FUSE Flush, so the error was triggered too late).