Scan doxygen xml to determine docnames to rebuild

This means changes to doxygen xml files will caused rst documents that
use those files to be rebuilt
Restructure to abstract app object away from in directive internals

We wrap up all the login in a FileStateCache object so that the internal
code only needs to know about that rather than about the Sphinx app
object itself.

This is because the internal code doesn't need that level of exposure
and if it called from docutils instead of Sphinx then that app object
won't really be available but the FileStateCache is relatively easily
mocked.
Updated README to acknowledge jmnas

Thank you for figuring out the update logic when doxygen xml files
change to get the rst files to re-build.
Merge branch 'outdated'