Docs

This incoporates changes from #10 and #11 and should be reviewed afterwards.

This adds the `npm run-script jsdoc` script that will generate jsdoc3 for the contents of `src/` and output them at `docs/api/`. This also makes quite a few files jsdoc3 compatible so that they render there.