New builder

Work in progress — don’t merge.

Changes related to improving `diagrams-doc`: https://groups.google.com/forum/#!topic/diagrams-discuss/LQvPrTfMvng

I’ve been playing around with builder and pandoc and had some ideas. The ticked boxes are things that are at least partially implemented in the PRs. I’d like to hear thoughts/suggestions.

## lib changes

- [x] `BackendBuild` class with

  ```haskell
 outputSize :: Lens' (Options b v n) (SizeSpec V2 n)

  saveDia :: FilePath -> Options b v n -> QDiagram b v n Any -> IO (Maybe String) 
  ```

## builder changes

Still not entirely happy with how hashing/results are returned.

- [x] More versatile — can return diagrams, results or save result to file using `BackendBuild` class

- [x] Hashing is done automatically for backends with `BackendBuild`.


## pandoc changes

This still needs a lot of work but the basic idea is there.

- [x] support for multiple backends in same markdown file

- [x] options for width, height etc. from code block attributes for specific diagrams

- [x] backends can adjust for different output formats

- [x] executable for `jsonfilter`ing and library for more complicated uses

- [x] images are stored with hash name and document references these hashed files (no other way to do it yet)


## doc changes

I think doc should ditch Cairo in favour of Rasterific, SVG and PGF (for PDFs) so we can all build the same documentation.

- [ ] Replace rst with markdown. Pandoc has an RTS reader but it doesn’t seem to do everything properly yet. I’m pretty sure Pandoc’s markdown can support all the features we use in rst.

- [ ] pdf version of documentation