Refactor SchedulerIO actions to accept the current scheduler

This required some refactoring of subscribeOn and deliverOn, which apparently were never scheduler-correct anyways.
Better logging for any transactional invariant violations
Merge branch 'get-current-scheduler'