Replace extra data in struct drm_local_map by a union.

This is a tagged union; only certain variants, specified by the map's
type, need a bus space handle and a drm bus map.  They will also need
a bus space tag later.  Other variants use other data, with more to
be added in the future, probably.
Add operations to drmP.h for access to drm_local_map memory or I/O.
Update drm_memory.c to reflect drm_local_map tagged union changes.
For _DRM_CONSISTENT maps, hang the dmah on the drm_local_map.

The way the Linux code does it is a bookkeeping kludge that falls
down when we want to maintain more than just the PCI bus address, as
drm mmap will want in order to avoid vtophys.
Omit __drm_pci_free.  Use kmem for drm_dma_handles now that we can.
Add XXX comment to obviously broken error branch in drm_addmap_core.
Hook local drm_scatter.c into the build.
Add an i915drm device stub to files.drm2, attaching at pci.
Add i915drm2 module.
Insert a strategic cast into agp_find_bridge.
Make container_of type-safe with the help of a judicious sizeof.

Still avoids multiple evaluation of the pointer operand expression.
Add stub definition of __must_check to <linux/kernel.h>.
Define barrier() as __insn_barrier() in <linux/kernel.h>.
Tag the spinlock struct in <linux/spinlock.h>.
Use bus_addr_t, not bus_size_t, for resource_size_t; add phys_addr_t.
Use e_vm_default_addr to choose a default address in Linux vm_mmap.
Add BUG() to Linux <asm/bug.h>.
Add idr_for_each to Linux idr abstraction.
Ifdef out some drm prime stuff in drmP.h.
Remove drm prime stuff from drm_gem.c.