move Message to Router::Message
rename RemoteNode to Node
move FailureDetector under Node namespace
move App groups up a level

Now that Server and Client are no longer namespaces, they can be
supervision groups instead.
add atomic getset to Registry

if value is not set, set it to the value yielded by the block given.
use registry getset to create new nodes

This avoids a race condition if there is more than one thread creating
nodes (since getset is atomic).