*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
It would complain on `self2`. On one hand, you can use `.bind(this)` to avoid the need for `self`. On the other hand, this prevents deeply nested code which should be cleaner.