[Async DB] Documentation/minor tweaks

I'm adding documentation, making minor tweaks as I'm reading through the code. Some of the changes are likely unnecessary/incorrect as I may be overlooking some finer aspects of the new code.

Let me know if I should continue with this or not.

I just started, so I plan to push more as I go through the code (planning to get through all the data code this weekend). I try to make sure nothing breaks, but I also haven't tested this code yet.

(I see you addressed the comments I made, so I'll have to rebase this anyway)
But, for example, it doesn't really make sense to present dc:isReplacedBy as an array. The current handling is mostly just a hack to avoid having to specify that explicitly — there's only ever one relation for that, so it shows a string as expected. Relations need a major overhaul, but for the moment I think the current behavior makes sense.