Fix wrong VRAM size calculation on old drivers without GET_FBINFO ioctl.

The linebytes is a byte number of width so it should be
(linebytes * height), not (width * linebytes).

XXX: I'm not sure where WSDISPLAYIO_GET_FBINFO implementation was discussed
     but I wonder if we should use proper ifdef or macro to share this
     third party Xorg driver with OpenBSD...
No need to handle colormap ioctls if cmsize == 0 even in WSFB_CI case.
Add one more cmsize == 0 check before PUTCMAP ioctl.
Add kludge to use luna68k 4/8bpp framebuffers as a monochrome server.

The idea is taken from mlterm-fb --depth option implementation.

This change should not affect other framebuffer types.
Tested on 4bpp on LUNA and 1bpp/8bpp on LUNA-II.
implement the kernel_has_driver() method.  this has the benefit of
stopping the "vesa" driver from loading on hardware that has been
claimed by a kernel driver and thus shouldn't be using "vesa".
make sure all the KMS code is only ever run when in KMS mode.  fixes
problems with the UMS (aka existing) driver type when KMS is enabled.