split FDAggConstraint in FDSumConstraint and FDProdConstraint
Rewrote FDsum and FDprod constraints

Now they are conditional: for every variable, there is a boolean
variable stating whether or not the first one belongs to the set.
Addressed compilation warnings.
Renamed atom and var create* methods to more consistent new* methods.
Fixes #34 - Fixes #35
Small bugfix and added test
Bugfix in printing weighted cpsum and cpprods.
Bugfix and simplification in products

Fixed a bug with the products where a wrong explanation for not being negative was made
Fixing this also significantly simplified code
Removed some of the overhead of fdsumconstraint and (temporarily) adding aggregates without function terms as pseudo-boolean aggregates.
Bugfix for atoms which were not added to the solver.
Bugfixes in ECNF printer.
Improved propagation over conditional sums

Propagation for negating the condition was forgotten. Added this now. See #36
Improved learnt fd-agg clauses.
Extended overriding of encoding atoms.
Added GPERF to CMake
Cheaper value check.
fixes issue 36 also for products

NOTE: this fix is only done in the case that no negative values occur.
The case where negative values occur is still probably very incomplete since
only propagation on abs values is done.
fixes issue #37

refactored watches in fdaggconstraint to only accept after all initialisation is done
Bugfix in transforming sumweighted into pseudo-aggregate with weights.
Added regression test.
Further improved printing