This function makes a copy of the DOMQuery object, but keeps the new copy
(initially) pointed at the same matches. This object can then be queried without
changing the original DOMQuery. However, changes to the elements inside of this
DOMQuery will show up in the DOMQuery from which it is branched.
Compare this operation with {@link cloneAll()}. The cloneAll() call takes
the current DOMNode object and makes a copy of all of its matches. You continue
to operate on the same DOMNode object, but the elements inside of the DOMQuery
are copies of those before the call to cloneAll().
This, on the other hand, copies the DOMQuery, but keeps valid
references to the document and the wrapped elements. A new query branch is
created, but any changes will be written back to the same document.
In practice, this comes in handy when you want to do multiple queries on a part
of the document, but then return to a previous set of matches. (see {@link QPTPL}
for examples of this in practice).
Example: