arm: Rearrange brackets in the fault cause detection

Place the brackets correctly in order to see course of the conditions
instantaneously.
arm: Port the new PV entry allocator from amd64/i386/mips

PV entries are now roughly half the size.
Instead of using a shared UMA zone for 28 byte pv entries (two 8-byte tailq
nodes, a 4 byte pointer, a 4 byte address and 4 byte flags), we allocate a page
at a time per process. This provides 252 pv entries per process (actually, per
pmap address space) and eliminates one of the 8-byte tailq entries since
we now can track per-process pv entries implicitly.
The pointer to the pmap can be eliminated by doing address arithmetic to find
the metadata on the page headers to find a single pointer shared by all 252
entries. There is an 8-int bitmap for the freelist of those 252 entries.
When in serious low memory condition, allocation of another pv_chunk is
possible by freeing some pages in pmap_pv_reclaim().

Added pv_entry/pv_chunk related statistics to pmap.
pv_entry/pv_chunk statistics can be accessed via sysctl vm.pmap.

Ported PTE freelist of KVA allocation and maintenance from i386.
Using an idea from Stephan Uphoff, use the empty pte's that correspond
to the unused kva in the pv memory block to thread a freelist through.
This allows us to free pages that used to be used for pv entry chunks
since we can now track holes in the kva memory block.

As both ARM pmap.c and pmap-v6.c use the same header and pv_entry, pmap and
md_page structures are different, it was needed to separate code designed for
ARMv6/7 from the one for other ARMs.