Shutdown JVM on file descriptor exhaustion

patch by jmckenzie, reviewed by marcuse for CASSANDRA-7579
Merge branch 'cassandra-2.1' into trunk

Conflicts:
	src/java/org/apache/cassandra/cli/CliClient.java
	src/java/org/apache/cassandra/cli/CliMain.java
	src/java/org/apache/cassandra/cli/CliSessionState.java
	src/java/org/apache/cassandra/config/DatabaseDescriptor.java
	src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
fix error from merge
Avoid IAE in IndexSummaryManager while sorting sstables

Patch by Tyler Hobbs; reviewed by Benjamin Lerer for CASSANDRA-8182
Merge branch 'cassandra-2.1' into trunk
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
SingleColumnRestriction refactoring (remove duplicate code and migrate
some logic to other places)
Removes EQ, IN and Slice interfaces
Makes IRestrictions implements Restriction
Relation refactoring
Extracts the restrictions code from SelectStatement into
StatementRestrictions
Refactor some Selection methods and move a method from SelectStatement
to Selection
Renames Restrictions into SingleColumnRestrictions
Renames IRestrictions into Restrictions