Added tests for the image module.
If trying to manipulate an image the doesn't exist on origin, the semaphore was never released. Fixed that.
Moved tracking of active manipulations to a separate module and added tests for it.
Fixed a tiny benign inaccuracy in parseOTFSteps when using parens but not params.