Allow server Start to accept a preconfigured listener.

* In testing scenarios where multiple packages each configure their
  own nats server, port collisions could happen. Without changing the
  behavior of gnatsd, this allows us to configure a listener
  externally with an available port, or generate a default listener
  in the main routine during normal server operation.
* Cowritten with Oleg.

@derekcollison @krobertson 
If the listener hasn't bound to the port yet, it hasn't returned and had a reference stored on `s`.  That means we're calling a method on a nil pointer, (by doing `addr.String()`) and I observed panics in tests without this polling approach.