:paperclip: Add `Oto::Text` plain text document type

As part of this change, shared functionality of `Oto::JSON` and
`Oto::Text` documents was refactored out into a `Oto::Document` superclass.