Added tests on Enum analysis
Reduced time to simplify an expression

The exit condition was not always called. Moved it in another block where it
is evaluated on every expression.
Fix BSON query document generation and identified another nasty bug

Bug: problem with complex expression not simplified as expected
Fixed bug in simplification

- did not detect when an InfixExpression could not be further simplified (hence, stopping the
simplification process earlier)
- prevented an expression to be processed again, resulting in not enough loops (or too many)

Result is significantly faster simplification on complex expressions (ie, with mulitple InfixExpressions)
Fix bug in boolean distributive law computation
Fixed bug in DocumentEncoder, added logger for BSON query