Refactor: Restructure Polly.

Restructure Polly to support linking of subsystems
as well as building a loadable module.

The goal is to provide only the bare minimum within the
LLVMPolly loadable module and pull in the required components
via libraries.
Refactor Polly's Pass creation and initialization.

Pass creation and initialization has been moved to the PollySupport
library to enable reuse in other projects.

The loadable module LLVMPolly.so now only relies on the
StaticInitializer to care of everything when loaded.

Conflicts:
	lib/CMakeLists.txt
	lib/RegisterPasses.cpp
Swap inclusion order for Cloog <-> ISL

This ensures that isl headers are found in
the specified ISL directory before looking
for them in the Cloog directories.
Profiling: Track reasons & diagnostics.

Preliminary support for tracking reject reasons
for SCoPs. This allows for post-analysis fixing.

Still missing: Detect _all_ reject reasons, or
an iterative approach: Detect & Fix until all
problems are fixed or unsolvable.

Conflicts:
	lib/Analysis/ScopDetection.cpp
(ScopDetection): Track all errors during detection.

This adds a simple log to all errors encountered during
SCoPDetection. If we ignore situations like non-linearity in
memory access functions, we still continue detection and
track the error for further use.

This can be used to decide which information needs to be added
to a SCoP, in order to comply with the polyhedron model.

Conflicts:
	include/polly/ScopDetection.h
	lib/Analysis/ScopDetection.cpp
Add test case to check invariance of base addresses

Array base addresses should be invariant in the region
considered. This has to be checked, e.g., when a two-dimensional
array is represented aspointers to pointers because the address
A[i] in an access A[i][j] changes with i.
Check if array base addresses are invariant

Use alias analysis to check that base addresses are
constant (invariant) in the region considered.

Conflicts:
	include/polly/ScopDetection.h
	lib/Analysis/ScopDetection.cpp
Add support for (some) non affine expressions

The NonAffineSCEVValidator supports non affine expressions of weak
parametrized form, e.g.:
 n*i + c , where n and c are parameters and i is a loop-iv.

We still reject expressions of the form:
 i*j + c, where i and j are loop-ivs and c is a parameter.
Transitively remove all children after region expansion

Conflicts:
	lib/Analysis/ScopDetection.cpp