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.
can we make these imports explicit? i know it's more typing, but the fact that `basename(path)` does not _always_ equal the `package name` makes non-explicit imports ambiguous, adding state to our minds.