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
Alright, good suggestion. Although one thing is that it becomes hard to reset the cursor atomically if it flips over. Better make `valueCursor` an `AtomicLong` as well so that we basically don't have to worry about that value flipping over the `MAX_VALUE` edge.