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
When there is a UNION of A and B, where B is of width >1, then the UNION will only be returning a single width sequence. That means only one of B's columns will be returned, so a "reshape" (or "cut"?) method might create a NodeSequence that wraps another and returns only a single-width sequence. Really, it's kind of a "project" relational operation, but "project" is overloaded quite a bit already.