Introduce a better shrinking construction on transit terms.

The basic idea is to build collection objects as binary trees and then join them. This gives a very
easy way to shrink which is that OWOTO, you can pick a subtree and go with that. This leads to
logarithmic shrinking.
Improve the shrinker.

* Kill left and right subtrees with no regard to the map structure. If there is a bug, reduction is now
irrespective of the actual map formed. The trick is to generate keys and values individually and then
push them together later on.

* Symbols, timestamps and UUIDs have obvious simplifications.