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 
I'm writing the code, but I don't know if writing the port back to `s.opts` is very valuable.  We can resolve it externally using `s.Addr()` and `net.SplitHostPort(s.Addr().String())`, but nothing can see the port on the options externally and nothing uses it internally.