Minor refactoring to cleanup interfaces

Changes:
- Store the table so it's not required to be passed to the query
builder functions
- Invoke ToDynamo/FromDynamo outside of the query builder since it's
not part of the read path
- Some WIP changes for GetDocument which were hard to separate (I'm
being lazy)
Implement GetDocument