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.
I suggest using TestContext.assertQueryReturns instead of pulling cells out individually. There are plenty of examples in the test suite if you need a reference.