Added smart pointers to fix memory leakage
Put compiled expression evaluators into a map so that recompilation is not required, speeding up tests