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.
The reason for having mutable "Nodes" is to avoid having to rebuild your entire tree every time something (anything!) changes. Since each 'parent' node depends on all of its contents, the consequences of not having mutability can lead to some fairly severe performance hits.