remove rowGranularity from Analysis/AnalyzedStatement

It is not allowed to have a column with a finer granularity
then the table has in the query. So it is unnecessary to
keep track of the max rowGranularity because
tableInfo.rowGranularity() will always have the max
rowGranularity.
add RelationOutput symbol and ExpressionAnalyzer

This commit adds a RelationOutput, ExpressionAnalyzer and a
RelationOutputResolver.

The ExpressionAnalyzer can be used to convert Expression
(from SQL AST) into a Symbol. Using composition over
inheritance makes it possible to easier handle nested
relations and re-use the ExpressionAnalyzer for different
sources.

The DataStatementAnalyzer is now marked as deprecated and
shouldn't be used anymore.
use ExpressionAnalyzer in CopyStatementAnalyzer
change Delete Analysis to relation structure

DeleteAnalyzedStatement now has a relation as source/target
instead of tableInfo.

In case of bulk operations there are now longer nested full
blown AnalyzedStatements but only multiple WhereClauses.