Use "go test --race" to run test suite

We switched the test suite of yagnats to run with --race on travis and fixed all the race conditions that this switch surfaced.

In particular we found the following issues:
* since logger can be set after a connection is created, it needs to use locks to ensure that no "bad" loggers are read.
* the test helper server used .Closed in go routines and needs to use locks on this attribute.
* Client.subscriptions are accessed concurrently.