Added optparse-applicative commandline.

Still to be done here is exporting an API for extension.  We should be
able to build programs that can handle their own arguments then hand off
to diagrams `defaultMain`.

Also missing is version information.  We will need to look at how
Cmdargs does this.

Once we figure this out we can extract all of this into a common place
shared by all the backends.
Split options record into records for specific main's.

Optparse-Applicative allows us to combine records and parsers at each
form of main that we offer.  The record doesn't need to be monolithic
but we can just include options for the specific needs of a particular
main.

One issue now is that normally "-o" is not optional, but we want to
allow in the `multiMain` a lone "--list".
Lensify options.
Merge branch 'master' of github.com:diagrams/diagrams-postscript into optparse
Implement typeclasses for mainWith.

The idea is to allow users to create programs that generate diagrams
based on some parameters taken on the command line.  This also allows
for a single `mainWith` that can handle a single diagram, multiple named
diagrams, diagrams for each page, or animations with numbered output
files.  Arguments can be taken in order from the commandline or with a
custom parser from the command line or with a custom named argument via
the `Parseable` typeclass.

All this is experimental in this branch and I'm working to factor out
the code that will be common to all backends (or useful in general) and
put it in -lib.
Work in progress [ci-skip]

This is an attempt to abstract Mainable so it can serve all the purposes
I hope it can.  The uses I would like to see include using `mainWith` to
get all our particular main forms (multi, pages, animation) and to
handle functions that take `Parseable` arguments, pulling their
commandline parsers in.  But I would hope to be able to handle these two
groups of things orthognally.  If you have some argument that produces
an animation it should work like `defaultAnimMain` when it gets to the
base case.

To do this I split out the parsing of arguments and the rendering of a
diagram or whatever other rendering would be happening into `mainArgs`
and `mainRender`.  I'm not sure if this is quite workable.
Fixed Mainable.

Mainable might now be correct.  The problem was we needed to know what a
particular `ToDiagrams` instance was going to result with.  This should
be cleared up now giving all the flexibility I was hoping for.
Moved Mainable to -lib.
Use default implementations for anim and multi.
Fix warnings from -Wall.
Cleaned up language pragmas
Cleaned up cabal file.
Updated haddocks, export mainWith.
Add link to tutorial.
Update to support parameterized defaultAnimMainRender, and updated haddocks.
Merge pull request #9 from diagrams/optparse

Optparse