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