properly handle required/optional args

[fixes #330]
Use path with highest reach, and use slightly different reach definition.
More testing.
More testing.
Should stop the trace when it stalls because of NodeStore breaking a path.
split NodeStore into public/private structures
Removed some new-pathfinder stuff which didn't work out.
Split out NodeStore administrative functions to NodeStore_admin and paid down technical debt with proliferation of #include NodeStore_pvt
Use path with highest reach, and use slightly different reach definition.
More testing.
More testing.
Use a value definition that gives reach and path length equal weight.
Whenever a lookup is done, ping all routes that have not recently been pinged. This hopefully keeps reach numbers relevant.
Merge branch 'reach_test' of https://github.com/Arceliar/cjdns into reach_test