Bug fixes: mutex copies & channel closures.

- The listener was closing the close channel without initializing it.
- The listener was closing the close channel as it was dying, but the net.Serve method also does this. This was leading to a double-close. Added some guards to prevent this.
- The methods for changeCertListener were operating on copies of the struct. This meant we were locking on copies of mutexes.