Rebase Decimal changes on latest master (3/23)

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