D.TwoD.Arrow: misc cleanup
D.TwoD.Arrow: simplify definition of arrowBetween'
D.TwoD.Arrow: clarify comments for `arrow` and `arrow'`
change arrow' to produce a delayed leaf.

The idea is that arrow' can now take the *final* transformation into
account so it can properly decide what to draw.  See #112.

Things seem to be almost working... but it seems we don't quite handle
frozen transforms properly yet, since things are flipped in the Y-axis.
D.TwoD.Arrow: bug fix in new arrow': moveTo instead of moveOriginTo
D.TwoD.Arrow: remove debugging output
D.TwoD.Arrow: Use existing line color as default for tail, head, and shaft

This is another cool thing enabled by doing arrows as delayed leaves:
in addition to knowing the overall transformation in effect when
drawing an arrow, we know the overall *style*!  So we can grab
e.g. the line color and use it as a fill color for the arrow head and
tail.  In particular, this patch sets things up so that line color is
used by default for the head, tail, and shaft of an arrow.  That is,
doing (arrow ... # lc blue) will result in a completely blue
arrow (including head and tail).  This can be overridden by setting
headStyle, tailStyle, or shaftStyle as usual.
D.TwoD.Arrow: remove extraneous word in comment
D.TwoD.Arrow: bug fix: actually take unfrozen transform into account!

Previously, arrow' simply took the tranformation and applied it to the
points origin and (len,0), and then drew an arrow between the images
of those points.  However, the transformation might also be doing some
flipping or shearing which was getting ignored: affine transformations
are not determined by their action on two points.

This was causing, e.g. shafts to be drawn flipped along the axis of
the arrow with the SVG backend, since the SVG backend does a `reflectY`
as the last thing before freezing, but it was getting ignored.

This patch makes `arrow'` properly apply the transformation to the
shaft trail prior to uniformly scaling and positioning it.
Merge pull request #137 from diagrams/delayed-subtrees

Delayed subtrees
minor formatting/cleanup
add `fromAlphaColour` method to Color class

This allows (partial) conversions in both directions, which I found
necessary for implementing some lenses to set some color in a given
style.  Adding such a method seems generally unobjectionable to me.
D.Attributes: export utility functions mk{Fill,Line}Color

These are intentionally not re-exported from the Prelude; most users
should not need them.
D.TwoD.Arrow: Lenses for setting head, tail, and shaft style directly.

This is the sort of convenient thing that we can do now that we use
lens for everything: we can provide headColor, tailColor, and
shaftColor directly as "virtual fields" so the user doesn't have to
think about style modification functions in the common case where they
just want to set the color (and we also protect them from the easy
mistake of setting the line color on the head, or fill color on the
shaft).

This is something of a proof-of-concept.  Ideally we could even
refactor these as e.g. headColor = headStyle . styleFillColor where
styleFillColor :: (Color c, Color c') => Setter (Style v) (Style v) c c'.
Default instance for FillColor

Not sure why we were missing this before.
D.Attributes: Setters for Style -> {line,fill} color

Note these can't be lenses because there's nothing to return if the
style does not contain a line or fill color attribute. (One could just
return a default value but that would violate the lens laws.)

Seems to work pretty well!  Perhaps we should add setters for other
attributes as well.
D.TwoD.Arrow: reimplement {head,tail,shaft}Color lenses in terms of style{Line,Fill}Color
D.TwoD.Arrow: bug fix: styleLineColor should set line color, not fill color
make {head,tail,Shaft}Color less polymorphic

The more polymorphic versions caused problems for type inference in typical
use cases.
D.TwoD.Arrow: minor Haddock improvements