Top level Dimension entity 

Changes include :

* Top level construct - Dimension, which holds set of attributes. And DimensionTable belongs to a dimension.
* Relationships are between Cube and Dimension instead of Cube and DimensionTable
* Refactoring of classnames

dimensions wont be more than 1, in the code flow. If the method is called directly, only then dimensions.size() can be more than one. Thus its an assert.