Custom objects

Custom object functionality, docs, and tests
Hmm...  Seems odd to set this for every option that gets set, rather than just went the `base_url` or `version` are updated.  Not a big deal, but perhaps there's a reason I'm unaware of?