factor out common code in tests
BROKEN SHAPES; clump rewrite

Shape layer is BROKEN by this commit.

Sequences in clump are now referenced by "key". Unified sequence and
annealment lookups. Change data members of Clump and the entire
Annealment class to non-public.
rewrite shape layer, again

Shape layer consists of BaseShape and BaseShapeFactory. The factories
analyze clumps to create shape objects. These shape objects may have
specialized methods and internal representations. Factory objects may also
declare "dependencies" on other factories. These dependency factories
analyze each clump and pass their resulting shape objects to the "dependant"
factory, to produce the final shape object.

Also introduced a useful shape type: LINEAR_DOUBLE.