Merge pull request #310 from finspin/fixTests

fixed traversing tests
Correct inconsistency in `$.fn.map`

Update Cheerio's `map` method to more closely match jQuery's
implementation.

1. Invoke the specified callback in the context of the element
2. Wrap the returned elements in a Cheerio object
3. Remove `null` and `undefined` when returned by the interator
4. Perform a shallow merge on arrays returned by the iterator

Update the documentation and unit tests to reflect this change.
Update HtmlParser2 version

The latest version of HtmlParser2 has deprecated the `ignoreWhitespace`
option in favor of a new option, `normalizeWhitespace`.

Allow for future patch releases of HtmlParser2 to automatically
"upstream" into Cheerio.
Introduce rudimentary benchmark suite

Compare the performance of Cheerio at HEAD with jsdom [1] using jQuery.
Include a new GNU Make target: `bench`.

[1] https://github.com/tmpvar/jsdom
Merge pull request #314 from jugglinmike/bench

Introduce rudimentary benchmark suite
Merge pull request #313 from jugglinmike/bump-htmlparser2

Update HtmlParser2 version
Ignore colons inside of url(.*) when parsing css

Parsing by css is totally wrong, but this will at least not break on `url(http://whatever);` anymore! Closes issue #315.
Enforce project quotation mark style

As documented in this project's `CONTRIBUTING.md` file, string literals
should be defined using single quotes. Add this setting to the JSHint
configuration file, and correct occurrences of double quotes.
Implement `$.fn.end`

From the jQuery API documentation[1]:

> **Description**: End the most recent filtering operation in the
> current chain and return the set of matched elements to its previous
> state.
>
> Most of jQuery's DOM traversal methods operate on a jQuery object
> instance and produce a new one, matching a different set of DOM
> elements. When this happens, it is as if the new set of elements is
> pushed onto a stack that is maintained inside the object. Each
> successive filtering method pushes a new element set onto the stack.
> If we need an older element set, we can use end() to pop the sets back
> off of the stack.

[1] http://api.jquery.com/end/
Simplify internal function

By returning an Array of DOM nodes, `traverseParents` can operate
faster, and `Cheerio#closest` can be made more efficient by not
needless wrapping intermediate results in Cheerio objects.
Correct bug in `Cheerio#parents`

Ensure that:

- The parents of *every* element in the selection are returned
- The descendent groups are added to the returned set in reverse order
  of the original elements
- The result set contains no duplicates
Merge pull request #318 from jugglinmike/fix-parents

Fix parents
Run CI against Node v0.11 as an allowed failure

Building against the latest unstable release of Node.js should help the
project stay on top of any bugs or breaking changes to the platform.
Specifying that build as an allowed failure guarantees that unforeseen
errors do not block ongoing work.
Use CSSselect library directly

The "cheerio-select" library does not offer additional functionality,
serving as a simple wrapper around the "CSSselect" library. Its
inclusion in Cheerio it makes the project:

- More difficult to understand (contributors must read through that
  library's source before recognizing CSS selector bugs originate from
  CSSselect)
- Less efficient (it introduces an additional function call and
  processing overhead)
- More difficult to maintain (CSSselect releases must first be approved
  by "cheerio-select" before they can reach Cheerio itself)
Merge pull request #321 from jugglinmike/use-css-select

Use CSSselect library directly
Merge pull request #320 from jugglinmike/node-unstable

Run CI against Node v0.11 as an allowed failure
added nextUntil() and prevUntil()
minor code improvements and better tests for the filter parameter
removed extra whitespaces and improved test descriptions
code optimization by caching a couple of select operations