Fix annotation for Oracle
Proper ordering for positions
Proper handling of ASCII tables
Base implementation of an SMTLib printer/solver
Improve/Fix SMTLib solvers

- Implement smt and smt-z3/smt-cvc4 as options for --solvers

- Uses a main solver sources for verification/CLP, taking into account
  --solvers

- Implement Z3-SMT sets

- Add tests for Z3-SMT
Support get-model for arrays in z3-smt
Unify and simplify function templates and unrolling banks

- Both Expr-based solvers and z3-based solvers rely on same template
  generation routines and unrolling strategy. Templates and unrolling
  bank is refactored in solvers.templates._

- Encoding is done through TemplateEncoder. Performance highly relies on
  an efficient TemplateEncoder.substitute() implementation.
Implement and test everything for smt-z3

 - Partial support for CVC4 (excluding constant arrays)