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.
this needs to be addressed. seems to me that we should either: 

1. (trivial) don't let successive publishing extend the timeout. one delay only.
1. (harder) allow extending the delay on every Publish, but every successive one is smaller (i.e. constant republishing extends the delay to a max amount in increments of decreasing size). `time.After(np.Timeout / timesExtended)` or something.