Modified mmult

Added derefencing in case output is scalar.
Replaced getBoundsFromMap with getBounds.

Map has bugs and hence should not be used.
Added a check for indexing. If zero indexed and the index is not a constant expression and does not have loop invariants subtract 1.
Modified check for zero or one indexing

Moved it to name expression to reduce complexity.
Added a specialised method

A specialised method for bounds check with three indices added.
Modified getLoopBounds Methods

Made the method recursive to handle nested loops
Added stuff.
Modified codegen