fix(dsolver/ode_solver): fix the use of param in ODE

For an ODE "d/dt[x] = 0", we handle the variable 'x' as a parameter in
CAPD by putting it in a "par:" section, instead of "var:" section. It is
to minimize the number of ODE variables and avoid unnecessary
computation.

However, we still need to establish the relation between x_0 and x_t
variable, which was missed in the previous implementation. In each ODE
step (simple/non-simple forward/backward pruning), we takes an
intersection of _0 and _t variables of parameter, and update _0 and _t
with the intersected value. If any of the parameter variables gets an
empty interval, the whole process will return UNSAT.

close #19
close #44
chore(dsolvers/ode_solver): use DREAL_LOG_ERROR for exceptions
tests(nra_ode/simple_par): add test
fix(dsolvers/ode_solver): skip ODE computation for trivial problem

skip ODE computation for trivial problems
fix(dsolvers/heuristics): fix ident, includes
tests(nra_ode/aimhigh_1_0.smt2.expected): fix the expected result (UNSAT)
fix(opensmt/egraph/Enode): change type of precision to double
fix(opensmt/api/OpenSMTContext): add constraints after processing addIntvCtr

close #45
refactor(dsolvers): clean up code
refactor(dsolvers/icp_solver): simplify rp_variable creation

 - enlarge box size at once
 - assign domain in place
 - set precision only for real vars
fix(dsolvers/icp_solver): use delta instead of 2 * delta when compute residual