Duplicate the `options` object in place so we don't need to deal with a plain Hash.
Cleanup CLI internals and argument passing.
Documentation updates

Use the `Gets` format for describing getters.
Change methods visibility

We aren't dealing with inheritance anyway
Force a CLI failure if no source is given and improve documentation.