mmu: fix how mappings into ARC buffer are tracked

Currently all mapping are keyed on ARC buffer start when mapping is
added, but on remove pointer into ARC buffer is used, so remove may
leave no longer valid mappings in the database. This patch fixes it
by using a pointer into ARC as a key, the same pointer that is used
during removal.
move call to remove_mapping/add_mapping to mmu.cc
pass pointer to pte instead of virtual address to page_allocator
mmu: constify hw_ptep methods that do not change pte it points to

This allows those function to be called on const object.
mmu: add simple pagecache implementation

This patch adds simple page cache implementation. Page cache is limited
in size and pages are evicted from it in FIFO order.
mmu: page_allocator specialization to allocated from pagecache
pass type of faule (r/w) to page allocator
pass shared status to map_file_page_cache
intergate ARC with write cache
return cow status from page allocators
enable page cache