Add back missing parts from Upstream 3.0.38 -> 3.0.39

mm: migration: clean up unmap_and_move():
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.0.y&id=331fae62e66ac4209f23df0df66999932e513fff

mm: compaction: determine if dirty pages can be migrated without blocking within ->migratepage:
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.0.y&id=397d9c507ff1c9c5afc80c80ee245c2455d6a1db

mm: compaction: introduce sync-light migration for use by compaction:
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.0.y&id=f869774c37710ef2b773d167d184b9936988d07f

Change-Id: I93e9470d85f8cd788bacd8d4871a605bfd8ba869