test/test_run: only check simplified hull generations for special options

Commit 708e66dd7faa946dbbd01e94c108d53fd9f97c58 (test/test_run: also
check correctness of simplified hull generation) introduced
a correctness check on the simplified hull generation, but only
for those test cases where the (simplified) hull computation isn't
even performed.
Instead, we now test the computation for the special options test
cases, where the (simplified) hull does get computed.
include/cloog/domain.h: remove declarations of (unused) PolyLib printing functions
Combine cloog_scattering_lazy_isscalar and cloog_scattering_scalar

These two function performed pretty much the same operation,
one checking whether a dimension has a constant value, and the
other obtaining that value (if there is any such value).
The new function performs both operation, copying the value
if the passed pointer is not NULL.
Let cloog_domain_lowerbound_update return the updated domain

In some backends, this function could return a different object
from the one that is passed in.
cloog_domain_print_structure: print all polyhedra in the union

Before, cloog_domain_print_structure would only print the first
polyhedron in the union.
fix typos in insert_loop comments
Rename CloogConstraints to CloogConstraintSet
Introduce CloogConstraint abstraction

Previously a "constraint" was represented by a pointer to a constraint
set and a line number in the constraint set.
The CloogConstraint structure combines this information and hides
it from the code in source/clast.c
insert_guard: avoid out-of-bounds access
insert_guard: make sure coefficient in left hand side of equality is positive

This will always be the case with the PolyLib backend, but need
not be the case for other backends.
cloog_loop_merge: ensure loop domains are convex, i.e., not unions

Most of the code, especially the clast construction, assumes
the loop domains are not unions.
cloog_loop_separate ensures this property in all cases,
but cloog_loop_merge would fail to ensure this property
if called on a list of a single loop.
Handle 0D problems by adding a 0th level to the main recursion

The main algorithm recurses over all dimensions of the loops,
the initial call working on the first, outermost dimension.
However, for 0-dimensional problems, there is no outermost
dimension and this initial call would therefore perform
all sorts of inappropriate actions resulting in general mayhem.

We solve this problem, by adding an extra 0th level in the recursion
that handles the parameter domains of the loops (which may themselves
be 0-dimensional).  Only some of the steps behave slightly differently
for the 0th level than they to for the other levels.

1. intersection with the context: proceeds as usual
2. projection: proceeds as usual; the loops are projected on the first
	0 dimension, i.e., onto the parameter space
3. separation: proceeds as usual, but we have to be careful about
	the "scalar" dimension optimization, which obviously does
	not apply to the parameter domain
4. lexographic sorting: not needed; the program is only run for
	a specific set of values for the parameters, so it does
	not matter in which order the disjoint parameter domains
	appear
5a. stride computation: not applicable
5b. recursion: proceeds as usual onto the first dimension
	(assuming there is a first dimension; otherwise the
	recursion correctly stops at the "0th" dimension)
6. backtrack: not needed

The clast generation has also been changed to expect this
extra level.  In particular, the 0th level does not generate
any loop, but it may generate a set of independent conditions.
options.c: remove -rays option

The value of MAX_RAYS should have little effect for recent PolyLibs
and is completely meaningless for other backends.
add isl backend
include/cloog/domain.h: avoid use of C++ keyword "template"
Explicitly specify -rpath for libtool libraries

Apparently, libtool doesn't figure this out automatically and
then later refuses to install the libraries.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
source/isl: fix typos in comments

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
clast.c: don't insert any "scalars" for level 0

f8b6a419a532d644b2379bff78b62a75bfe74502 (Handle 0D problems by adding a
0th level to the main recursion) introduced a level 0 and was careful
not to generate any loops for this level, but we should also avoid
inserting "scalars" for this virtual level.

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
Optionally refrain from printing any informational messages

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
clast.c: sort equations in guard clasts

Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>