Ipns name resolution

This branch is not yet complete, but before i move forward, the name resolution code (in namesys) needs some critiquing. There are also a decent number of bugfixes in this branch that i ran into while trying to get the code to a point where i could test ipns.
@whyrusleeping Well, let's start with: Handles can be separate from Nodes. Imagine e.g. a file that serves a snapshot of some current state (/proc, a counter, whatever): you could take the snapshot at Open time, and the snapshot would be the Handle, serving Reads of its captured state. Each client opening the file gets a different, up-to-date, snapshot.

The second important task for Open is to manage access control. For example, a read-only file can and should make an `open(2)` with `O_WRONLY` fail with `EROFS` or maybe `EPERM`. Or, it might just decide that you specifically are not allowed to what you tried to do.

Third, there's all kinds of flags like `O_SYNC` that Open gets to see and react to. Some of the flags may be implemented by the VFS layer in kernel, like `O_EXCL` probably is (not sure right now), but even then you might e.g. implement a cluster filesystem that guarantees that `O_EXCL` exclusivity across multiple hosts.

Fourth, Open gets to tell the kernel more about what to do with the file: http://godoc.org/bazil.org/fuse#OpenResponse e.g. tells the kernel how aggressively it is allowed to cache file data, whether the file is seekable (think `/dev/urandom`), and such.