Node#getHTML(), resolves #422

This resolves #422. A detailed discussion of the technique used in this commit is also located in #422.

Added:
* `Node#getHTML()` now works on document fragments.
* Unit tests to ensure what's returned by `getHTML()` is correct, and whether the document fragment is still in tact after using `getHTML()` on it. The reason for the latter test is the unique behavior of frags where the elements contained in it are removed once the frag is appended anywhere. I have also left a comment in the code incase anyone gets confused later on.