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
kernel: Add atomic_load_acq_64()

* This routine was already implemented on x86_64 under another name

* Take the FreeBSD i586 version for i386; this variant use a chmxchg8b
  instruction and require at least a Pentium CPU to run
drm: preliminary replacement for vm_phys_fictitious functions
kernel: PAT work, test_and_set_bit()

Partially based on work by
Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
drm2: Make the PAT code more compatible with FreeBSD

* drm_mmap() still has issues with the memattr parameter
kernel: Correctly handle fake pages