mmu: optimize searching for vmas

Currently we search the entire vma list while looking for a range.  This
is less than optimal.

Define a vma::addr_compare function object that can be used as comparator
with boost::rbtree::equal_range(), and use that to search for both bounds
simultaneously.

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>