Include <dlfcn.h> and "config.h".
(free_frame): Call frame->driver->close instead of
mwin__close_device.
(DLOPEN_SHLIB_EXT): New macro.
(MDeviceLibraryInterface): New type.
(device_library_list): New variable.
(register_device_library): New function.
(null_device): New variable.
(null_device_close, null_device_get_prop)
(null_device_realize_face, null_device_free_realized_face): New
function.
(null_driver): New variable.
(null_device_init, null_device_fini, null_device_open): New
functions.
(null_interface): New variable.
(Mfreetype, Mdevice): Declare them.
(m17n_init_win): Increment win_initialized. Initialize Mx, Mgd,
Mfreetype, Mdevice, Mdisplay, Mscreen, Mdrawable, Mdevice, and
Mwin__Close_Device. Register drivers for Mx and Mgd.
(m17n_fini_win): Decremented win_initialized. Call "fini"
function of all opened devices. Don't call mwin__fini.
(Mdisplay, Mscreen, Mdrawable, Mdepth, Mwidget, Mcolormap):
Declare them here.
(mframe): Handle Mdevice key of PLIST.
(mframe_get_prop): Call frame->device->get_prop instead of
mwin__device_get_prop.