Fixed various issues and implemented some new features around the new ScanningQueryEngine

This PR contains different commits related to different query-related issues, as follows:
* MODE-2178 - fixed the code for various types of JOINS and also shareable nodes. Enabled back all the previously disabled Tck tests
* MODE-2247 - implemented the `INTERSECT` and `EXCEPT` operations together with several new test cases
* MODE-2209 - implemented the ability to check `READ` permissions for nodes returned from a query, via a new `NodeSequence` implementation
If a node would always pass through a `Sequence` once, then the buffer would provide no benefit.
However, since there is a `RestartableSequence` my thinking was that this might not always be the case. If this is not true, then I can remove the buffer altogether, including the `add` & `contains` change which was driven by this.