CURATOR-126: Fix race condition in CuratorFrameworkImpl.close()

The bug is simple: Executor.shutdownNow() calls FutureTask.cancel(), which on older JDK versions has a bug where it can interrupt the wrong thread, causing all sorts of problems.  Manually interrupting a thread does not have this problem.  Given that this Executor is only every used to run one task (the backgroundOperationsLoop) we can simply switch to a Thread and avoid that bug.