Set ump->iomem to NULL when mmap fails

If mmap() fails, the return value is MAP_FAILED, not NULL.
Other functions, such as uio_close expect that uio->mem.iomem
will be NULL if memory mapping of the iomem region fails.
Determine UIO buffer size at runtime

Previously the maximum amount of memory available to be exported
by each uio device was fixed at compilation time.
This value was used to create the memory management buffer for all
devices when uio_open() was called.
This commit changes the algorithm to allocate the memory management
buffer for each device as it is opened.