kernel: Port new device_pager interface from FreeBSD

Some parts implemented by François Tigeot and Matthew Dillon
kernel: add OBJT_MGTDEVICE in some more places
aio_return.3: The return type is ssize_t, not int.
kernel/bus: Remove NULL check after kmalloc with M_INTWAIT (w/o M_NULLOK).

Pointed-out-by: sephe
proto: Fix copy-n-paste error; PR_ASYNC_RCVD should be 0x0800.

It was defined to the same value as PR_ASYNC_SEND.  However, in the
current code base, it does not hurt, since only TCP has this flag set.
drm2: Handle device creation, translate dev_ops functions

* drm_attach, drm_open, drm_close, drm_mmap, drm_read, drm_ioctl modified
  following the model of the existing functions in the old drm/ implementation

* poll and select don't exist on DragonFly and are replaced by kqueue

* Additional fixes from Johannes Hofmann to set ap->a_result in drm_mmap()
  and resolve crashes in drm_open() and drm_ioctl()
drm2: Port d_mmap_single() from FreeBSD
iicbus: add intel_iic to iicbb driver
drm2: Small porting fixes

* Add missing rb-tree function prototype

* Replace member2struct() by container_of() like it was done
  in the original Linux code

* Fix taskqueue_start_threads() call

* Remove unused vm_mmap call
i915: replace several sleep functions by DELAY()
drm2: replace callout_schedule by callout_reset()
i915: Rename pipe to i915_pipe
i915: fix sf_buf_alloc() calls
drm2: Replace or comment out devfs cdevpriv calls
drm2: Translate some vm calls, comment out others
drm2: Properly handle requests passing page boundaries

Change pmap_mapdev_attr() call in drm2 to properly handle
requests passing page boundaries.
drm: switch back from kfree to free and add a NULL check
drm2 porting: Small changes

* don't pass handle to default_pager_alloc()

* call vm_map_find() with fitit TRUE

* use IDX_TO_OFF()/OFF_TO_IDX() macros
drm: Implement vm_fault_quick_hold_pages and vm_page_unhold_pages

Also call vm_page_busy_wait() before vm_page_unwire() to avoid
page not busy asserts in vm_page_unwire() as recommended by dillon.
drm: lockmgr() returns 0 on success