Fix `replaceWith` method

Ensure that node structures are updated accordingly and update the tests
to verify the expected behavior of the method.
Remove "root" node

Cheerio uses a "root" object internally to collect parsed markup with
multiple top-level nodes. This object is not itself a node, but
modelling it as such can interfere with the parsing and traversing logic
that Cheerio relies on.

Attach the "root" object via an API that is not recognized by the
traversal logic so that it is not exposed through querying operations.
Merge pull request #341 from jugglinmike/remove-root

Remove "root" node
added parentsUntil method
Filter duplicates and add  more tests for parentsUntil method