Dynamic (re)assignment of processors to slow steps during import

- Made property encoding parallelizable in the batch importer
- Allows for multiple execution monitors
- The "average" stat is now a moving average which responds more quickly to changes
- Added a processor execution monitor that dynamically, throughout the import, (re)assigns processors to steps as it sees fit
The typical ways to deal with interrupted exception are these: either you do something special, or you let the exception bubble up, or you swallow the exception and reset the interruption flag. Do you think one of these might be a better fit than wrapping in a RuntimeException?