Graphics DDoc

This took a stupid amount of time, but I'm satisfied with the result. Much of it was done under very little sleep and questionable sobriety, but I've reviewed it all multiple times and I'm mostly sure it's all close to perfect. What I missed will either be caught by you during your review or, worst case scenario, over time when other things are being done.

I just barely missed finishing it all before you added your unit tests, but I don't think it should be any trouble to merge.

I'll have to wait until some time in May to do any serious work on the other packages, but I'm mostly sure that they'll take less time. They certainly look smaller.