External IPs

`NewRPCServer()` now sets the hostname to "localhost" by default. The proper external IP of the server can be discovered by calling `LearnHostname()`. Accordingly, the client package now calls `LearnHostname()` when boostrapping or creating a new quorum. However, `LearnHostname()` must not be called during testing, so a call to `NewServer()` in client_test.go was replaced with a manual initialization.

`LearnHostname()` discovers the external IP via an http request to http://myexternalip.com/raw. In the future, we'll be asking other nodes to tell us our IP, instead of using a third-party service. I thought this would be pretty straightforward, but unfortunately, RPCs don't give you access to the underlying TCP connection, so this won't be possible until another line of communication is added. (This was in the works anyway, to support large file transfers, so it's not a huge deal.)