add isl_val abstraction
An isl_val can represent integer and rational values as well as some
special values. isl_vals are meant to replace isl_ints in the external
interface as well as some abuses of isl_qpolynomials.
The advantage of isl_vals is that they behave like other isl objects and
that they do not expose how integer values are represented internally.
This means that the user will not have to take into account that GMP
is being used and that GMP can be replaced by another library without
affecting the user.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>