Clarifying some Node#css tests

to make clear that the JRuby port doesn't support custom handlers for
CSS queries.
Node#search: custom selectors and var bindings

This was previously not tested and not implemented.
Commit includes a refactoring of Node#search to match the patterns
already used in #css and #xpath.
Extracting regex for detecting xpath queries
JRuby port actually does support custom selectors

in CSS queries. Not sure when this happened, or why there's been no test
coverage for it up until now.
Clean up NodeSet#{xpath,css.search} arg handling

now uses the same logic as Node#{xpath,css.search}
NodeSet#{xpath,search} supports variable bindings

This always worked for Node, but not NodeSet. Now it does.
Clean up Node#{xpath,css,search}

and improving documentation for #search.
Stylistic nit: use do/end
Marking some Node and Document methods :nodoc:
Collapsing two similar tests.
Cleaning up "search" code.

- Added multiple-query test coverage to Document, DocumentFragment, Node
  and NodeSet for #xpath, #css and #search.
- Cleaned up NodeSet search methods to more closely resemble Node's
  methods.
- Improved documentation of the search methods in DocumentFragment,
  NodeSet, and Node.
DocumentFragment#search fix for CSS queries.

Previously, it didn't correctly match against root nodes.

Fixes #1205.
Extracting the "slop xpath prefix"

and replacing the use of `implied_xpath_context` in preparation for
a refactoring of search functionality.
Extract Searchable#search from Node and NodeSet.

Also:
- move ::LOOKS_LIKE_XPATH, #extract_params
- use #inject to implement NodeSet#css and NodeSet#xpath
Stylistic nit: use do/end
Updating DocumentFragment rdocs and comments.
Cleaning up and improving tests for fragment search.
Moving Node#css into Searchable#css

and starting to extract usable subchunks.
Refactoring Searchable#search
Refactoring NodeSet#search to use Searchable