Avoid a lump of coal (NPE) in JobProgressListener's stocking.
Merge pull request #295 from markhamstra/JobProgressListenerNPE

Avoid a lump of coal (NPE) in JobProgressListener's stocking.
Working ExternalAppendOnlyMap for Aggregator, but not for CoGroupedRDD
Working ExternalAppendOnlyMap for both CoGroupedRDDs and Aggregator
Refactor ExternalAppendOnlyMap to take in KVC instead of just KV
Provide for cases when mergeCombiners is not specified in ExternalAppendOnlyMap
Add toggle for ExternalAppendOnlyMap in Aggregator and CoGroupedRDD
Minor cleanup for Scala style
New minor edits
SamplingSizeTracker + Map + test suite
Move maps to util, and refactor more
Allow Product2 rather than just tuple kv pairs
Fix streaming JavaAPISuite that depended on order
Fix streaming JavaAPISuite again
Sort AppendOnlyMap in-place
Return efficient iterator if no spillage happened
Use real serializer & manual ordering
Final cleanup
Rename spark.shuffle.buffer variables
Add Apache headers