This builds on top of the MemoryManager interface introduced in
SPARK-10956. That issue implemented a StaticMemoryManager which implemented legacy behavior. This issue is concerned with implementing a UnifiedMemoryManager (or whatever we call it) according to the design doc posted in SPARK-10000.
Note: the scope of this issue is limited to implementing this new mode without significant refactoring. If necessary, any such refactoring should come later (or earlier) in a separate issue.