Initial node joining protocol

This patch adds an initial implementation of the Pastry node joining
protocol.  The first node in the network just starts, with an empty leaf
set and routing table.  All later nodes must know the address of some
existing node, which is contacts with a special JOIN message.  At that
point, the existing nodes route a series of messages back and forth
between the new node to exchange leaf set and routing table information.
The details can be found in [1].

This patch does not yet implement the enhanced node discovery algorithm
from §4.3.  Right now we just start the node joining protocol with the
existing node reference.  Eventually we'll want to implement §4.3, where
we first find the address of a nearby existing node, and then execute
the existing node joining protocol with it.

[1] M Castro, P Druschel, YC Hu and A Rowstron.  “Exploiting network
    proximity in peer-to-peer overlay networks”.  Technical report
    MSR-TR-2002-82, 2002.
    http://www.freepastry.org/PAST/location.pdf
Merge branch 'feature/join' into develop

* feature/join:
  Initial node joining protocol
  Routing tables must contain local references
  Applications can intercept messages
  Ignore duplicate entries in leaf sets
  Applications have names
  Construct node references from addresses
  Message parsing in public API