Javadoc
look for the provided key in this node, in the specified direction:
forwards => ceil search; otherwise floor
we require that the node's "current" key (including the relevant bound if we are a parent we have ascended into)
be already excluded by the search. this is useful for the following reasons:
1: we must ensure we never go backwards, so excluding that key from our binary search prevents our
descending into a child we have already visited (without any further checks)
2: we already check the bounds as we search upwards for our natural parent;
3: we want to cheaply check sequential access, so we always check the first key we're on anyway (if it can be done easily)