MONDRIAN-1061 - java.lang.StackOverflowError resulting from recursive calculated member usage within virtual cube

Fixed tail recursion with registering visited members for visitor implementation for discovering calculated members.
Please review.
Junits added with modified (simplified) foodmart schema.
We don't create external schema files. If needed, use the TestContext class to create ad-hoc schemas and the schema becomes inlined in the test class. Take a look at the existing tests (ie. BasicQueryTest. testDimWithoutAll) for examples using:

  Testcontext.withSchema()
  TestContext.create()
  Testcontext.createSubstitutingCube()