migrate: check movability of hugepage in unmap_and_move_huge_page()

Currently hugepage migration works well only for pmd-based hugepages
(mainly due to lack of testing,) so we had better not enable migration
of other levels of hugepages until we are ready for it.

Some users of hugepage migration (mbind, move_pages, and migrate_pages)
do page table walk and check pud/pmd_huge() there, so they are safe.
But the other users (softoffline and memory hotremove) don't do this,
so without this patch they can try to migrate unexpected types of hugepages.

To prevent this, we introduce hugepage_migration_support() as an architecture
dependent check of whether hugepage are implemented on a pmd basis or not.
And on some architecture multiple sizes of hugepages are available, so
hugepage_migration_support() also checks hugepage size.

Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
prepare to remove /proc/sys/vm/hugepages_treat_as_movable

Now we have extended hugepage migration and it's opened to many users
of page migration, which is a good reason to consider hugepage as movable.
So we can go to the direction to remove this parameter. In order to
allow userspace to prepare for the removal, let's leave this sysctl handler
as noop for a while.

Note that hugepage migration is available only for the architectures
which implement hugepage on a pmd basis. On the other architectures,
allocating hugepages from MOVABLE is not a good idea because it can
break memory hotremove (which expects that all pages of ZONE_MOVABLE are
movable.) So we choose GFP flags in accordance with mobility of hugepage.

ChangeLog v5:
 - choose GFP flags in accordance with mobility of hugepage

ChangeLog v3:
 - use WARN_ON_ONCE

ChangeLog v2:
 - shift to noop function instead of completely removing the parameter
 - rename patch title

Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Wanpeng Li <liwanp@linux.vnet.ibm.com>