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.
maybe we should break out `Mount` and `Unmount` into a separate file? (or rather, everything else-- the implementation details--). I'd like to be able to have people give a quick look into the main file of this package and know how to use it / the interface.