SPARK-2761 refactor #maybeSpill into Spillable

Moved `#maybeSpill` in ExternalSorter and EAOM into `Spillable`.
do u think we can maybe make this an abstract class instead of trait since it has a lot of default implementations?