More work on stringify and error recovery

Sorry it took so long to get this patch together.  It was a little difficult to do this since we both implemented the `stringify()` method in our own repos.  In the end, I removed my stringify and used yours since they are doing almost the same thing.  Here's what this pull request contains:

1. more tests of stringify and error recovery
2. added a `compact` option for stringify that removes whitespace around commas, and colons.
3. added some error recovery code so that poorly formed jsdocs don't crash the parser.  And if possible a reason for the error is recorded.
4. various small changes to make the linter happy