[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)
I think I was trying to match the web API here, which uses a string first. An array probably doesn't and definitely won't in the future make sense for all predicates, though the API doesn't seem to distinguish at the moment — at the moment it too just converts a string to an array...