Merge pull request #330 from mkambol/lag2107

[MONDRIAN-2107] Incorrect segment rollup with overlapping segments.
[TEST]  NonEmptyTest.testNonEmptyCJWithMultiPositionSlicer was failing for two reasons:
1)  During native evaluation, attempts to make a cell request with the "placeholder" compound slicer member in context were failing,
since the #null member is used as the placeholder, and the level associated w/ the null member does not have a level reader.  Also,
the #null member would always be treated as needing to return null.  To address this, swapped the placeholder to be (All).

2)  The tuple list is cached with the CompoundSlicerRolapMember as part of the key, but CSRM did not implement equals or hashcode.

This does not impact Mondrian 3, since Compound slicers are handled directly in native evaluation (MONDRIAN-1420).
Merge pull request #335 from mkambol/testCompSlicer

[TEST]  NonEmptyTest.testNonEmptyCJWithMultiPositionSlicer was failing f...
[TEST]  NonEmptyTest.testNativeWithOverriddenNullMemberRepAndNullConstraint makes a runtime modification of NullMemberRepresentation, and then verifies it can use that representation to query.  The  property isn't intended for runtime modification,
however, since there could be members cached with the previous representation.  To eliminate the risk of testing against an already
populated cache, use a fresh connection.
Merge pull request #336 from mkambol/testNullMem

[TEST]  NonEmptyTest.testNativeWithOverriddenNullMemberRepAndNullConstra...
[MONDRIAN-2135] - adding a loop over the attribute keylist to pick up additional conditions needed when doing exclusion in the constraint
Merge pull request #337 from kurtwalker/MONDRIAN-2135

[MONDRIAN-2135] - adding a loop over the attribute keylist to pick up ad...
[TEST] Replacing a test which validated a bug in the Mondrian 3 Recognizer (MONDRIAN-812), which is no longer used.  This test checks
that a SQL expression can be used both on the attribute's key column as well as the linked attribute on the agg table.
Merge pull request #338 from mkambol/testSqlExpr

[TEST] Replacing a test which validated a bug in the Mondrian 3 Recogniz...
[TEST] testCrossJoinAsteriskQuery had incorrect expected results.  We were seeing 2 different results when this test was run depending on whether the {[Time].[1997].children} set was cached from a previous query or not.  If the test was run individually we were seeing the incorrect results, which matched the expecteds.
 The bad results are caused by MONDRIAN-2138, which is a native eval bug that can occur when .children is used on a non-all default member.  Side-stepped this bug by removing NON EMPTY from the axis.
Merge pull request #339 from mkambol/testAster

[TEST] testCrossJoinAsteriskQuery had incorrect expected results.  We we...
[TEST] Removing a test which verifies DefaultRecognizer functionality, which is not used in Mondrian 4.   If automatic aggregate table recognizition is ever added to M4 then tests new tests will be added.  MONDRIAN-1730 covers either adding such support, or providing some migration path.
Merge pull request #340 from mkambol/defRecTest

[TEST] Removing a test which verifies DefaultRecognizer functionality, w...
[TEST]  ReferenceLinks are not supported in Mondrian 4 yet (MONDRIAN-1337).  testPartialRollupParentChildHierarchy used the [Store] dimension, which is a reference link in [HR].  Swapped with a different dimension.
Merge pull request #341 from mkambol/partialRollupHR

[TEST]  ReferenceLinks are not supported in Mondrian 4 yet (MONDRIAN-133...
[TEST]  ParentChildHierarchyTest.testParentChildOrdinal was failing due to a missing link in the upgraded legacy schema.  The link between closure and fact table was present, but not between closure and dim table.  Also corrected the expected results for they query-- formerly the set of [Employees] was not in correct order.  Results now match the ordering from the Mondrian 3 test.
Merge pull request #342 from mkambol/legacyPC

[TEST]  ParentChildHierarchyTest.testParentChildOrdinal was failing due ...
[MONDRIAN-2128][MONDRIAN-2016]  Addressing two issues with the Aggregate function when a second parameter is specified.  Aggregate() would formerly sum up the value of the second parameter, even if a different aggregator was appropriate (e.g. if a count distinct measure was specified).  If the second parameter is not a base measure we fall back to summing (consistent with SSAS when Aggregate is applied on a non-measures calculated member).
This commit also fixes a related issue involving non-additive measures in context when the 2 argument form of Aggregate is evaluated.  Formerly this would cause the second argument to be ignored.
These changes were merged from Will Gorman's branch:  https://github.com/wgorman/mondrian/commit/e19cda6a2e1b03e2482dca502ffef258e41baa7a
(cherry picked from commit 5ab0031)
Merge pull request #348 from mkambol/lag2128

[MONDRIAN-2128][MONDRIAN-2016]  Addressing two issues with the Aggregate...
[MONDRIAN-1502] - schema load changes to support using closure tables during segment load.  There are also some test result changes.  All of those were incorrectly changed earlier in lagunitas development.