When a custom host/port is specified for connecting to the adb server, they are used to establish the connection. However, if the server is not running, they are not passed to the `adb start-server` command, and so the connection will fail because the server isn't listening on the expected port.
This change passes the address to the command, according to the following line from the adb usage info:
```
-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]
```
* StartServer is now a method on Server.
* What used to be Dialer.Dial is now Server.Dial.
* Server.Dial handles trying to start the server if the initial connection fails.
* Dialer now dials a network address.
* All types that took a Dialer now take a Server.
* Server now has tests!