*NOT READY* Refactor

Just an early PR to get a bird's eye view of the work in progress and establish some transparency.

Main efforts in this PR:

* Simplify key parts of the codebase to increase maintainability
* Isolate functionality into modules
* Deprecate the use of the `-rr` option and have `-r` absorb respecting the directory structure if the input is a directory
 * If the input is a file, then the markdown will be dumped into the root of the output directory (the old behavior of `-r`)
* Support the output being a markdown file: `jsdox myFile.js -o myOutput.md`

Fixes #49
Fixes #56
isn't this too restrictive?  what happens when you have multiple nesting levels and you need access to more than one context?  Or does it not complain is you copy `self` to `self2` for example?