Update path handling to assume focus on conf.py directory

We change any attempt to figure out a full path from a relative path to
assume that relative paths are relative to the conf.py directory rather
than the current working directory.

The former is more idiomatic of Sphinx extensions. The latter is
troublesome as for the separate 'source' and 'build' directory case,
the build is normally run from the parent of both of those directories
whilst in the combined case the build is run from the single main
directory where the conf.py is.
Change all paths to be relative to conf.py directory

As explained in the last commit, this is more idiomatic.
Update conf.py for ReadTheDocs

When we're on the ReadTheDocs server we'll be running from within the
'source' directory so we need to adjust what path we add to the sys.path
accordingly. We still want to run our usual dev builds from the parent
directory.

We also need to make sure that doxygen is run before the build so we add
that in a terribly hacky fashion to the conf.py and make sure that we
define the doxygen location as just 'doxygen' using the DOXYGEN
variable. We then introduce conditional assignment within the makefiles
so that the usual `which doxygen` is not run on the RTD server as it
seemed to fail when we tested it.