YARN-568. Add support for work preserving preemption to the FairScheduler. Contributed by Carlo Curino and Sandy Ryza