Import drm sources from Linux v3.8-rc6.
(commit id 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7)

Linux's drivers/gpu/drm is at sys/external/bsd/drm2/dist/drm, and
Linux's include/drm is at sys/external/bsd/drm2/dist/include/drm.

Files/subtrees excluded because of licence issues, to be either
revisited later (particularly nouveau and radeon, which are mostly
permissively licensed but a number of whose files have no licence
statements), rewritten/ignored, or imported later as kernel modules
under external/gpl2 instead:

   include/drm/drm_fb_cma_helper.h
   include/drm/drm_gem_cma_helper.h
   include/drm/drm_os_linux.h
   include/drm/drm_pciids.h
   include/drm/drm_sysfs.h
   include/drm/drm_usb.h
   include/drm/exynos_drm.h
   include/drm/gma_drm.h
   include/drm/intel-gtt.h
   drm/cirrus
   drm/drm_edid_load.c
   drm/drm_fb_cma_helper.c
   drm/drm_gem_cma_helper.c
   drm/drm_sysfs.c
   drm/drm_trace.h
   drm/drm_trace_points.c
   drm/drm_usb.c
   drm/exynos
   drm/gma500
   drm/i915/i915_trace.h
   drm/i915/i915_trace_points.c
   drm/i915/intel_acpi.c
   drm/mgag200
   drm/nouveau
   drm/radeon
   drm/shmobile
   drm/tegra
   drm/udl
Import drm user API header files from Linux v3.8-rc6.
(commit id 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7)

Linux's include/uapi/drm is at sys/external/bsd/drm2/dist/uapi.

exynos_drm.h excluded because it is GPL2+.
Add drm2 module makefile.
Add stubs for Linux header files for drm.
Make stub Linux header files visible to drm2.
Add types u8, u16, u32 to drm2's <linux/types.h> shim.
Implement atomic_t and atomic_read in drm2's <linux/atomic.h> shim.
Define dma_addr_t to be bus_addr_t in drm2's <linux/dma-mapping.h> shim.
Define __printf in drm2's <linux/kernel.h> shim.
Implement Linux spin lock in terms of kmutex_t in drm2's <linux/spinlock.h>.

Currently a spin lock will be an adaptive mutex, until I identify
cases in drm2 that actually require spinning and interrupt deferral.
Add type-unsafe container_of to drm2's <linux/kernel.h>.
Add initial draft of Linux list and hlist to <linux/list.h>.

Implemented in terms of TAILQ and LIST, respectively.
Not yet tested.
Avoid BITS_PER_LONG in drm_bufs.c.
Dumb implementation of a subset of Linux's idr abstraction.

An idr maintains a mapping from integers to data, like file descriptors
to struct file pointers.
Define __user to be empty in <linux/kernel.h>.

__user qualifies a pointer into userspace for static analyzers.
Include <linux/kernel.h> and <linux/types.h> in <drm/drm_hashtab.h>.
Add <drm/drm_os_netbsd.h> and include it in <drm/drmP.h>.
Include <linux/spinlock.h> in <drm/drm_mm.h>.
Omit unused drm_mm_initialized, which uses list internals.
Add shim <linux/uidgid.h>.