Try to avoid letting DeadlockIT leave deadlocks in the shared server.

o The test running after DeadlockIT (TransactionErrorIT) very rarely
  fails because there is a deadlock in the cleanup it does before it
  runs.

o These tests (and many other ITs) share a long-running server. My guess
  is that the clean-up at the end of DeadlockIT is not sufficient to get
  rid of the locks -- specifically the executor threads that the test
  use don't get killed off in time.

o This change makes the clean-up of the OtherThreadExecutor more
  rigorous to try to eliminate this corner-case.
Merge pull request #2162 from benbc/2.1-better-cleanup-for-deadlockit

Try to avoid letting DeadlockIT leave deadlocks in the shared server.