Add basic node & transform classes

A simple custom node and transform inherited from the relevant classes
in docutils and registered via the sphinx interface.

This is kind of half a commit but I am happy to keep it separate. The
Transform implementation suggests that the node should have a handler
object on it which will ultimately do all the work.
Switch doxygenindex directive to be handle be transform

Instead of processing everything in place in the directive code, we
output a single DoxygenNode with the appropriate data to be able to
process the doxygen xml at the "transform" stage of the document
preparation.

We output the node with its own IndexHandler which is then used by the
DoxygenTransform to replace the node with its expanded doxygen content.
Add source path concept to ProjectInfo

To reflect the root directory from which to specify relative paths to
source files that we want to handle as part of a project.

This is paving the way for behaviour to automatically handle the
generation of the doxygen xml files.
Add basic implementation of autodoxygen directive

We add a AutoDoxygenIndexDirective which takes the arguments and puts
out a DoxygenAutoNode into the document.

We give it a project_info object which is specially prepared by the
create_auto_project_info method and is set up to have a source path but
no project path. ie. it knows where the root of the source code to be
processed is but not the root of the resulting xml yet.

We then add a DoxygenAutoTranform which looks at all the
DoxygenAutoNodes in the document, figures out the common projects and
source directories, doxygen generates all the files together, updates
the project_info instances to point at the new xml directory for the
doxygen output and then creates DoxygenNodes which replace the
DoxygenAutoNodes in the document and are picked up by our other
Transform and processed as normal.

The code is pretty hacky at the moment and should have more parts
dependency injected to keep it cleaner.
Commenting and passing name to the error message

So that we properly identify the usage of doxygenindex and
autodoxygenindex in the errors.
Introduce DoxygenProcessHandler and AutoProjectInfo

We want to separate out all the ugly subprocess call and stuff into a
separate helper class to keep it as clean as possible. We inject it with
the various bits it needs to get the job done.

We create a AutoProjectInfo concept which handled separately and stored
separately from the standard ProjectInfo. This acts as a temporary for
the parts of the code which need to think in terms of source code and
generating the doxygen output and then we use it to create a standard
ProjectInfo instance and pass that on to the rest of the code. It
separates out the concepts and allows us to keep the ProjectInfo class
immutable.

We also introduce the TransformWrapper class to get around the fact that
the Sphinx and Docutils APIs expect you to pass a class object directly
to them so they can take care of instantiation. This prevents easy
dependency injection which is annoying so we create a wrapper with a
__call__ method which is going to pretend to be the class object but
allows us to inject the helper classes we need.
Switch to using "source" instead of "project" for auto directive

Otherwise we're overloading the word and it is a bit confusing. We
should probably do the same for "path" as well.
Switch path to source-path for auto directive

To avoid confusion with the behaviour of path in the other directives.
Add documentation for autodoxygenindex directive

Covering the basics, though without a failing case as we need to chase
that up a bit.
Credit Scopatz for autodoxygenindex concept
Support custom xml output directory with reasonable default

We add a config value to determine the directory that the doxygen xml is
generated to for the autodoxygenindex directive. We attempt to default
to a reasonable value by getting the doctrees output directory and
stripping the last component off the end.
Add documentation for the config values
Merge branch 'autodoxygen'
Move to version v1.1.0

As we have introduced new interfaces since the last version but haven't
broken anything (to my knowledge.)
Redirect ExpatError as ParserError.

When some c++ source file is badly encoded, an ExpatError causes
breathe to crash. This patch proposes to handle such an error just as
an IOError.
Further error handling for parsing errors

We change the parser module code to raise different exceptions for the
IOError and ExpatError where the latter is raised on unicode errors with
the file.

We change our index reading code in transforms.py to pick up on these
exceptions and report useful information in each case.

We propagate the line number through from the directive to make this
easier.

We also change the IndexHandler from taking the node and replacing it
internally so simply returning the replacement nodes and the
DoxygenTransform performs the replacement.
Move format_error helper to central place

And use it in the class & function directives as well as in the index
processing.
Refactor to render method in BaseDirective class

I don't like the idea of moving stuff to the base class for reuse
(composition/collaboration being generally better than inheritance) but
here it makes sense as so much of the data is coming from the Directive
base class itself.
Acknowledge Anthony Truchet's contribution

Thanks for helping with the Expat parser errors.
Merge branch 'expat-error'