[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)
You know better than me what these relationships are used for, but I imagine that this is mostly meant for the "Related" tab (but it got utilized for other things). In which case, we will probably want to expand on this in the future and make the relationships more meaningful (rather than say the items are simply related). It will make life a whole lot easier if we can just assume that the return value is always the same type (that probably goes for most functions). I think if you know you're expecting only a single result, then that's great and you can just get `[0]`, which is cake. If you don't know what you're expecting, you would otherwise be checking and converting to arrays all the time anyway.

In any case, as you say, this looks like a hack and we should probably be using a dedicated table to keep track of item merges, cross-library copying, etc. (at least internally, idk about the API). I would save the `relations` for user-defined item relations, which may have to be expanded as this feature develops. No better time to do it than now. :-)

And if this is meant for the "Related" tab (or we make it so), then it probably doesn't belong in `dataObject.js`, but in `item.js` instead, since I don't believe other relations make much sense (maybe?)