Proper redial handling

A few things in this PR:

 - Multi-node dialing
 - Continuous connection redialing
 - Cache proto.Buffers (cut allocs/write and allocs/read in half!)
 - client.Close()