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.