Initial attempt at implementation using tree structure.  Decidedly wrong.
Some refactoring, starting to put fill and stroke colors into RenderM. A bit less wrong.
progress -- fill and stroke color now sort of work
only call fillPreserve when a fill color is set
properly ignore fills on lines
fix handling of opacity
handle font face, slant, and weight properly

The idea is that the font face, weight, and slant must all be
set *simultaneously* with a call to `selectFontFace`.  When flattening
with `prims`, we would get all the attributes collected in one place
at a leaf; however, now that we are processing a tree, it won't do to
call `selectFontFace` again every time we see a `Style`.  Instead we
must collect up font attributes as we traverse the tree and
only call `selectFontFace` when actually rendering a text primitive.

Note that something similar also showed up before with fill and line
color: cairo only has a single "source color" so we can't simply set
the fill or stroke color as soon as we encounter the corresponding
attribute.
minor cleanup
clear current point with 'newPath' after drawing text.

I have no idea why this is required.
perform selectFontFace before transformations
progress: accumulate all style attributes in a Style object

The problem with storing individual attributes in CairoState is that
it completely ignored the semigroup semantics for each attribute!
Much more correct---and easier---is to simply accumulate a current
Style value, which handles everything for us automatically.  Then we
can extract the right attributes when needed.  Some attributes, of
course, can be dispatched immediately instead of accumulating them;
but we don't bother preventing them from accumulating anyway.
split out path-drawing into separate function so clip can use it

Previously, the Renderable instance for Path R2 did not do any filling
or stroking; now it does. Clipping used to work by calling the
Renderable Path instance and then doing a C.clip.  But now this was
causing the clipping paths to actually get stroked and filled.  The
solution is that there is now a separate function which draws a Path
R2 without stroking or filling it, and both clipping and the
Renderable instance call it; clipping then does a C.clip and the
Renderable instance then does stroking and filling.
make code a bit nicer with runC function
travis: add 'cabal update' call
RNode and RTree are now exported by D.Core.Compile
Merge pull request #36 from diagrams/backend-tree

Backend tree conversion