Clean-slate redesign/simplification of `Backend` class

See https://raw.githubusercontent.com/diagrams/diagrams-doc/master/notes/backend-data-flow.jpg (note the diagram is not quite right since the `Options` should get transformed by the adjust step too).

* Remove constraints on `Render` type (note we still need it to be able to express the `Renderable` class)
* Merge `doRender` and `renderData` into one function, `renderRTree`.
* Move `renderDia` and `renderDiaT` out of the `Backend` class.  Allowing backends to implement them directly, instead of in terms of `renderRTree` and `adjustDia` (the default) was not buying us anything.