Added Doxygen documentation to headers

Should help understand the code, as well as require coders to understand it well enough that they can explain it.