Use IP addresses if no hostnames are given.

Host to IP resolution is sometimes flaky (especially when toying with bonjour DNS) so
the drivers sometimes chose the wrong IP address when sending a message to Mesos. This
resulted in

mesos-master.WARNING:W0724 02:51:59.583686 26949 master.cpp:1769] Ignoring launch tasks message for offer [20140724-004359-3078776074-5050-26927-854 ] of framework 20140724-004359-3078776074-5050-26927-0000 from '2594d2b8-c859-44fc-b9c0-7ebead6740bd@10.0.2.15:56713' because it is not from the registered framework '2594d2b8-c859-44fc-b9c0-7ebead6740bd@10.101.130.183:56713'

error messages and Mesos therefore considering offers still being with
the scheduler (even though the scheduler thought it had handed it back
to Mesos).

This change tries to find the "best public ip" very early and then
never re-resolves it again. If that behaviour is undesired, pass in a
host name in the FrameworkInfo at startup time.
Add some additional debug logging to the event bus.
Add graceful shutdown handler to HttpReceiver.

Ensures that no request "in flight" will get cut off at driver
shutdown. The driver will wait until all requests in flight are
done. Otherwise, the occasional StatusUpdateAcknowledegeMessage was
cut off at executor shutdown, polluting the logs.