Feature/router interface refactor

This PR changes Router to an interface, add's registration functions for the server to trigger the router on UAID changes, and a Start/Close scheme for any other things a Router needs to manage.

It also introduces the use of Goconvey and gomock along with most of the mocked interfaces for easier testing.

Closes #127.

@jrconlin, @kitcambridge, r?

The main reason for this one was because the router is an interface, and needs a way to hide what exactly it might need done (ie, maybe future one wants to spin up who knows what for a DHT). If/When the other listeners are behind an interface they should probably be switched like this as well.