Use nested node stacks for predicates.

This ensures the current context node is set correctly when using the "self"
axis inside a path that's inside a predicate, e.g.

    foo/bar[baz/. = "something"]

Here the "self" axis should refer to foo/bar/baz, _not_ foo/bar.
Specs for nested predicates & self axis.
Fixed processing of nested predicates.

This ensures that nested predicates and functions that depend on predicates are
processed correctly.