Isolate Thrift conversion code from schema definition classes

patch by Aleksey Yeschenko; reviewed by Sylvain Lebresne for
CASSANDRA-8261
Avoid overlap in L1 when L0 contains many non-overlapping sstables

Patch by marcuse; reviewed by yukim for CASSANDRA-8211
Merge branch 'cassandra-2.0' into cassandra-2.1

Conflicts:
	CHANGES.txt
Merge branch 'cassandra-2.1' into trunk
Add schema_triggers cleanup to SystemKeyspace#finishStartup()
Merge branch 'cassandra-2.0' into cassandra-2.1

Conflicts:
	src/java/org/apache/cassandra/db/SystemKeyspace.java
Add schema_usertypes cleanup to SystemKeyspace#finishStartup()
Merge branch 'cassandra-2.1' into trunk
(Eclipse) Re-use test classes from an ant build

patch by Mikhail Stepura; reviewed by T Jake Luciani for CASSANDRA-8277
Merge branch 'cassandra-2.1' into trunk
fix some JDK 8 javadoc lint errors
route sigar's use of log4j thru slf4j
fix license extension
Extract the construction of InvalidRequestException into separate
methods.
Extract ColumnDefinition.kind checks
Replacing switch by polymorphism to convert relations into restrictions
Introduce Restrictions class
Use polymorphism instead of switch to create IndexExpressions
Moves methods from SelectStatement to Restrictions
Extract IRestrictions interface and move reversed logic to decorator