[SPARK-4480] Avoid many small spills in external data structures (1.1)

This is the branch-1.1 version of #3353. This requires a separate PR because the code in master has been refactored a little to eliminate duplicate code. I have tested this on a standalone cluster. The goal is to merge this into 1.1.1.

Author: Andrew Or <andrew@databricks.com>

Closes #3354 from andrewor14/avoid-small-spills-1.1 and squashes the following commits:

f2e552c [Andrew Or] Fix tests
7012595 [Andrew Or] Avoid many small spills
Update CHANGES.txt for 1.1.1-rc2
[maven-release-plugin] prepare release v1.1.1-rc2
Merge tag 'v1.1.1-rc2' of github.com:apache/spark into csd-1.1

[maven-release-plugin]  copy for tag v1.1.1-rc2

Conflicts:
	assembly/pom.xml
	bagel/pom.xml
	core/pom.xml
	examples/pom.xml
	external/flume-sink/pom.xml
	external/flume/pom.xml
	external/kafka/pom.xml
	external/mqtt/pom.xml
	external/twitter/pom.xml
	external/zeromq/pom.xml
	extras/kinesis-asl/pom.xml
	extras/spark-ganglia-lgpl/pom.xml
	graphx/pom.xml
	mllib/pom.xml
	pom.xml
	repl/pom.xml
	sql/catalyst/pom.xml
	sql/core/pom.xml
	sql/hive-thriftserver/pom.xml
	sql/hive/pom.xml
	streaming/pom.xml
	tools/pom.xml
	yarn/pom.xml
	yarn/stable/pom.xml
Merge branch 'csd-1.1' of github.com:markhamstra/spark into csd-1.1

Conflicts:
	extras/kinesis-asl/pom.xml
	extras/spark-ganglia-lgpl/pom.xml