pmap: add dummy implementation for pmap_invalidate*

Simply call cpu_wbinvd_on_all_cpus() which is not optimal
but seems to make drm2 work.
PAT work, mapdev_attr, kmem_alloc_attr

Partially based on work by
Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
pmap: Add change_attr() stubs for non-amd64 architectures
kernel: Improve pmap_invalidate_cache_range()

* There is no need to do anything on CPUs having the self-snoop feature

* Add some consistency checks

Inspired-from: FreeBSD
kernel: Use pmap_invalidate functions

* Matt's commit brutally used invltlb and wbinvd instructions
  everywhere

* These are now contained in pmap_invalidate_range(), which will be
  optimized later

* As a rule of thumb, functions where cache and tlb handling cause
  avoidable performance degradation are tagged with "XXX not optimal"
kernel: Optimize pmap_invalidate_range()

* No need to use wbinvd here, we only have to invalidate TLB entries
  and not regular CPU caches

* There is no need to drop all TLB caches either, only invalidate a few
  page mappings on all cpus

* Use pmap->pm_active to only signal the CPUs where the pmap is in use
pat: Add BUS_DMA_NOCACHE, VM_MEMATTR definitions

Inspired-from: FreeBSD
pat: Make the API more compatible with FreeBSD
pmap: Add pmap_mapbios()

Obtained-from: FreeBSD
pat: Add pmap_invalidate_cache_pages()

Obtained-from: FreeBSD
kernel/pat: Improve kmem_alloc_attr()

With-input-from: Matthew Dillon