Proper dependencies for Doxygen build rules

Now Doxygen build rules only get triggered if a relevant source file has
been changed.  This reduces the need for the -fast targets, and makes it
easier to consume these targets, e.g., in Jenkins without triggering
multiple builds of the XML documentation.

Add CMake helper functions to make using custom commands easier.  These
could be used elsewhere in the build system as well to isolate the
complexity into these functions, but that will be done in separate
changes.

Change-Id: I3411853da1948cd85e80df12b0c51df7d748f8d7