Changing the fields in MathExp from var to val.

Because the fields in MathExp never change

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Changing the type of gpuContent from read only to read/write

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
porting more of the C/opencl implementation to Java

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Adding helper classes and enums to implement aggregation expressions

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Using an array of GroupBy expressions to specify each column


#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Adding enums and constants required for aggregations in opencl

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Adding opencl krnels required for aggregation operations

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
reformating the whole opencl kernel file.
Addign a few debuging println statements to see what is going on

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Updating testcases to match aggregations with expressions

#30: port aggregations from opencl/cuda implementation 

Task-Url: http://github.com/meisam/spark/issues/issue/30
Adding a testcase to make sure enums ordinal values work the way I think
updating the test case to match MathExp.writeTo(bytebuffer)
code reformatting and cosmetics