JRB-26 alternate fix

- synchronization executor is owned by the factory, rather than the
  individual RrdNioBackend objects
- the factory cleans up the executor on finalization, so when the
  class gets unloaded, the timer threads should go away
- RrdNioBackend will register sync commands on map, and unregister
  them on unmap, so timers don't hang around if nothing is being
  mapped at the time
make the executor optional
remove the awaitTermination, added some doc on why