Fix a server startup bug (#51)
Fix a server startup bug (#51)

* Fix a server startup bug

If `server.ListenAndServe()` cannot startup due to errors such as "port
in use", it will exit and get stuck waiting for `osSignals`. This is not
ideal because if a server doesn't start, we don't want to be waiting for
an exit signal from the OS. We want to log the error and exit.

Unfortunately, we can't select on a waitgroup. This PR adds a select
statement and replaces the waitgroup with a channel to handle the above
case.

* Improve readability

* Use a single channel to handle close and errors

* Remove defer close of serverErrors channel

ardanlabs/kit,ardanlabs/kit