Better support for serializing algorithms in memory

 This branch gives us better support for serializing algorithms, without rigidly assuming that they can be reproduced from the string originally used to create them.

The main idea is to expand on Object::description, so that it produces a string that accurately reflects the state of the current object in memory, and also add support for bypassing LoadStore blocks, so that it is possible to force serialization to a single buffer.

When serialization to a single buffer is available, we can do things like serialize a transform in memory, send it to a different process, and the other process can then deserialize it and use the transform, without having to use the file system as an intermediary. Doing this in turn allows some simplification of the algorithm building done in AlgorithmCore::compare and AlgorithmCore::enroll, allowing us to treat multi and single process cases uniformly for the most part. 
Theoretically yes, the most common cases are returning this, or returning a clone of this (either of which is safe in this case since the nominal root of the transform is already pointed at by a shared pointer)--but if the root is actually a transform that returns its own child (which is already scheduled to be deleted via parent), then this is a problem. 

The larger issue is that maintaining the parent pointer is a pain because Qt loves to complain about doing things from multiple threads.