JRB-26 more work on a clean sync/shutdown

- add a thread factory to name the threads something useful
- only initialize the executor if a read-write RrdNioBackend
  is open()'d
- add an explicit shutdown() method for shutting down the
  executor before finalize() does