3.0 - Database api docs

Update many of the API doc block errors in Database/. I've also started using `@internal` on the database internals that I don't think users will often need to interact with directly. I've done this for a few reasons:

* Having a smaller stable API makes any mistakes we make easier to fix in the future.
* The database layer is still new and we can easily remove `@internal` more than we can add it.