testutils: Use defer to ensure CloseAndVerify on t.Fatal (#788)
testutils: Use defer to ensure CloseAndVerify on t.Fatal (#788)

This avoids the issue in #787 where a test using t.Fatal ends up exiting
abruptly which:
 * Leaves any channels created running (causing leaks)
 * Skips the goroutine leak checker, which marks that a leak
   occurred due to a failed test, so other tests don't report
   the leak.

This causes leaks to be reported after a failed test, but the reported
leaks are attributed to other tests (E.g., in #787, we see the leak is
caused by TestLargeTimeoutsAreClamped but the leak is reported in
TestRelayConcurrentCalls).

Using `defer` ensures that we try and close channels (to avoid leaks in
the first place), but also run the leak detector which will skip any
leak checks in future caused by the failed test.
uber/tchannel-go,uber/tchannel-go