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.