Add support for insertAfter and insertBefore

This addresses issue [#608](https://github.com/cheeriojs/cheerio/issues/608) and adds support for the `insertAfter` and `insertBefore` methods, as well as unit tests and documentation.

The one potentially controversial change is adding a reference to the original "root" object in the cheerio instance prototype. This is to address the loss of scope/root access that occurs when a new object is created, e.g. the object returned by `$('<li class="grape">Grape</li>')` has no internal way of referencing that original $ root, and thus executing a selector against it (e.g. `$('<li class="grape">Grape</li>').insertAfter('.foo')`). I was attempting to make any changes outside of manipulation.js, but this proved to be impossible AFAIK.  Happy to change if there's a better way.
Could you format this like the comment on lines 26–27, in sentence case and with a space after each `//`?