Use Tseitin transformation to convert propositional formulae into CNF.

This resolves the `AnalysisBudgetException` problem for big pattern matches.

Initial experiments indicate that the problem is even simpler than initially thought: all formulae I got from the exhaustiveness check could be transformed directly into CNF by formula simplification, neither expansion not Tseitin transformation where needed.
Thus the framework introduced here might be overkill and a much simpler implementation could work as well.

For Scala 2.11 I'd suggest to replace the DPLL prodecude with Sat4j. See separate branch.