Fix bug in `empty` method

Ensure that when a node is empty, the childrens' `parent` reference is
destroyed.
Add performance optimization for  `empty` method
Accept one or more node references as a context

From the jQuery API documentation on the `jQuery` function [1]:

> ## Using DOM elements
>
> The second and third formulations of this function create a jQuery
> object using one or more DOM elements that were already selected in
> some other way.

[1] http://api.jquery.com/jQuery/#using-dom-elements
added parentsUntil method
Filter duplicates and add  more tests for parentsUntil method
allow cheerio.load work with DomHandler
accept dom of DomHandler to cheerio.load
Optimize add and remove class cases

Test: attributes - Add Remove class (file: jquery.html)
  cheerio x 1,953 ops/sec ±1.70% (94 runs sampled)
  old x 718 ops/sec ±2.92% (88 runs sampled)
  jsdom x 55.61 ops/sec ±1.16% (74 runs sampled)
fix 'content undefined'
update version
Pin `expect.js` to 0.2 

As long as https://github.com/LearnBoost/expect.js/pull/102 isn't resolved, 0.3 causes bugs.
Remove nodes from their previous structures

When manipulation methods operate on existing nodes, ensure that these
nodes are removed from their previous structures.
Merge pull request #350 from jugglinmike/cleanup-manip

Remove nodes from their previous structures
Update to latest version of expect.js

In version 0.3, expect.js corrected the order of its `eql` assertion.
This exposed several bugs in Cheerio's unit tests, where `aguments`
objects were being tested for deep equality with Array instances.
Fix attr when $ collection contains text modules
Merge pull request #400 from jugglinmike/update-expect

Update to latest version of expect.js
update to entities@0.5.0
Merge pull request #403 from fb55/master

Update to entities@0.5.0
Merge pull request #402 from kpdecker/attr-text

Fix attr when $ collection contains text modules
switch to lodash