mmu: Hold vma list lock in mmap() paths

All page table operations have to hold vma lock currently.

If populate races with unpopulated in best case some s may remain
populated in worst case unpopulate may free intermediate page while
populate uses it. If populate races with protect some ptes may end up
with incorrect permissions. vma list lock may be to big of a hammer to
prevent those races, but at least per vma lock is needed.

Signed-off-by: Gleb Natapov <gleb@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>