Use the descendant axis for CSS selectors.

Instead of using "descendant-or-self" Oga will use "descendant". This ensures
that expressions such as "foo *" don't return a set also including the "foo"
element.

Nokogiri solves this problem in a somewhat different way by using //foo//* for
the CSS expression "foo *". While this works in Nokogiri the expression
"descendant-or-self::node()" is slow as a snail in Oga (due to its nature of
retrieving _all_ nodes first). By using "descendant" we can work around this
problem.
Allow XPath idents to start with an underscore.

This is valid in XML so XPath should support it as well.
Allow CSS identifiers to start with an underscore.
XPath idents can't start with a star.

That is, names such as "*foo" are not valid. This was most likely a typo in the
first place.
CSS parser tests for paths with namespaces.
Removed support for CSS such as "|X"

This expression could be used to get all elements that _don't_ have any
namespace. The problem is that this can't be expressed as just a node test,
instead the resulting XPath would have to look something like the following:

    X[local-name() = name()]

However, since the XPath predicates are already created for pseudo classes and
such, also injecting the above into it would be a real big pain. As such I've
decided not to support it.