Generating code for simple boundscheck optimisation

Simple prototype successfull
Added new file for boundsCheckOptimisations

File contains templated functions to handle bounds check optimisations.
Added template file to library_ops

Allows me make the file visible to outside functions.
Added test functions for checkDims method

Function currently tests two dimensional arrays.
Added methods to check whether name and const exprs are affine

The check was moved to separate methods since they will be used to check recursively.
Added method to check whether an expression is affine.

The method merely checks the type of the expression and moves the implemetation details to a methods specialised for that method. Currently supported expressions are const and name. for everything else, false will be returned.
Modified affine index check

Added methods for plus and minus expressions.
Also commented out code to prevent code generation for optimisation.
Added methods to handle loop bounds

methods to check whether loop bounds consisting of name , const and plus expressions are currently supported. However, the methods are yet to be integrated into the analysis.
Bug Fixes.

LoopInfo parameters were not added. Also definition of methods for plus and minus expressions were not included in header file.
Midway between stuff
Integrated check for loop bounds

The check was integrated with new optimisation code. Now supports name, const , plus and minus expressions.
Removed old commented code

The previous loop bounds check code was commented and now it is removed.
Added methods to handle optimisation string generation.
Integrated optimisation string methods

Integrated methods for plus, minus, name and const expressions. Method signatures allow generation for both start and stop expressions. Also removed compile time errors.
Uncommented optimisation code

The code was commented so until the code generator was complete.
Modified genBoundCheckStmt method

Earlier the method had a single check for the genBoundCheck flag. This was incorrect since both the optimised and unoptimised versions need to generate bounds checks for slice indices as well as those which can not be optimised.
Removed comments in genElimIndex

Comments were code related to check for regular index.
Modified bounds check optimisation code

Made sure if defs were being generated for testing
added a check to ensure size of expression vectors from loopBounds map is not empty.
Added code for factoring in loop direction. Incomplete
Bug fix in getLoopDirectionEnum

check for cast expression should have been with the expr variable not with stepExpr. The stepExpr value is NULL.