Basic changes to support decimal data type

Change function templates to integrate with new function definition template

Scale and Precision propagation

WIP: Account for scale and precision while injecting implicit casts!

Cleanup + Propogation of scale and precision completed

Unit tests

Cleanup

Use visitor patter in ExpressionTreeMaterializer for implicit casts

Cleanup
Separate out templates for different cast functions
Cast to Int, BigInt from Decimal