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 `getOrCreateId` method looks very suspicious. The `existing` HashMap is never written to, and the `created` HashMap has unsynchronised accesses.