Simplify and document the DOMTraverser return value protocol

Simplify the handler return value protocol to use only two cases, and document
the expectations.

Handlers can return

* the next node to process
    * aborts processing for current node
    * can also be null, so .nextSibling works even on lastChild
* true
    * continue processing for current node

Rationale:

* Calling nextSibling in a handler to return the next node can return null
  when the last child is replaced. In any case, processing for the current
  node should be terminated. Handling null as equivalent to a node in the
  traverser keeps the handler code simple and reduces the probability of bugs
  there.
* Instead of node vs. true we could use an object return like this:
  { node: someNode, continue: false }
  While somewhat self-documenting, this lets users return nonsensical
  combinations like
  { continue: false } or { node: someNode, continue: true }
  So overall it does not seem to be much better. The important bit is to have
  only two cases with clearly defined semantics. A great bikeshedding topic
  though.

Change-Id: I3028aa53e18cdd37e8fe6b7babd62303cb62ecf3
Merge "Simplify and document the DOMTraverser return value protocol"