initial work on implementing "delayed" subtrees

Delayed subtrees consist of a continuation which generate a QDiagram
when given the accumulated d-annotation at that point in the tree.
Useful for things which need to know the final transformation applied
to them before deciding what diagram to generate.  The prototypical
use case is arrows: see
https://github.com/diagrams/diagrams-lib/issues/112 .  However, I hope
this may be useful for other things as well: for example, diagrams
which scale normally until hitting some maximum or minimum size, at
which point they refuse to scale any further (or more generally
diagrams which scale as some non-linear function of the transformation
applied to them).

The only downside is that the u-annotation must be fixed ahead of
time---doing otherwise requires a more general solution for constraint
solving.
D.Core.Types: revert mkQD for backwards compatibility, and introduce more general mkQD'
add comment on QDiagram, and misc cleanup
D.Core.Types: export transfFromAnnot and transfToAnnot
add DDelay nodes to mark where a DelayedLeaf was expanded

The idea is that the function in a DelayedLeaf should produce a
diagram which already takes the non-frozen transformation into
account, so we must drop them when we reach a DDelay node (otherwise
we end up applying them twice).
Merge pull request #47 from diagrams/delayed-subtrees

Delayed subtrees