Adding an EvalContext that is used instead of passing around predicate, document, and maybe info
Optimizer handles (expr and True) and (expr or False) now
Update tests for optimizer
Adding a new CachedNode
Adding module to cache duplicate expressions
Refactor now caches expressions after compaction
Adding cache hit stats
Avoid providing duplicate failure reason info
Updating docs, and renaming info to ctx
Updated readme
Updating changelog
Version bump
Tag the release