MFC (for sucking in aflags in vm)
MFC
MFC
MFCMFC
Use atomics to update the page dirty field, in a way similar to the
handling of the aflags.

Disscussed with:	alc, attilio (previous versions)
After the dirty updates are atomic, there is no need to lock
page queues only to guarantee proper dirty updates.

Submitted by:	alc
MFC
MFC
Replace the vm_page_queue_lock mis-usage with a global MD page rwlock
that protects the TTE list and page coloring bits.
Additively, bring out of any locking some calles to vm_page_aflag_clear()
as it is no longer necessary now.

Discussed with:	alc
Reviewed by:	alc
Tested by:	flo
MFC
MFC
MFC
MFC
MFC
MFC
Check in an intial implementation of radix tree implementation to replace
the vm object pages splay.

TODO:
- Handle differently the negative keys for having smaller depth
  index nodes (negative keys caming from indirect blocks)
- Fix the get_node() by having support for a low reserved objects
  directly from UMA
- Implement the lookup_le and re-enable VM_NRESERVELEVEL = 1
- Try to rework the superpage splay of idle pages and the cache splay
  for every vm object in order to regain space on vm_page structure
- Verify performance and improve them (likely by having consumers to deal
  with several ranges of pages manually?)

Obtained from:	jeff, Mayur Shardul (GSoC 2009)
 - Implement vm_radix_lookup_le().
 - Fix vm_radix_lookupn() when max == -1 by making the end parameter
   inclusive.
Remove the stub for faking promotion failure now that the reservations
are fully supported.
MFC
Acquire the pmap lock in order to prevent a race that might lead to the
machine-independent layer mistakenly believing that a dirty page is clean.