refactor refresh

Lots of the device-related distinction wandered into
base/ffi/framebuffer_<driver>. This eases the refresh logic in
UI manager, which basically only decides what kind of refresh
to trigger. The device specific configuration in the framebuffer
driver decides how to realize that whish.

screen.lua is gone, in its place is now the framebuffer driver.
The device abstraction decides what framebuffer driver to load.
switch from scaleByDPI() to scaleBySize()
update base

pulls the needed changes in base for the refresh refactoring
fix old (pre-refactor) refresh call syntax
update base

pull in Kobo-related fix
pull in refresh waiting fix
fix refactor bug: invalidate update_regions_func
update base

pull fix for rotated rotation (well...) on Kobos
provide debug function to framebuffer ffi implementation
pass device object to input FFI module

this is needed (for now) on Android, since the FFI module triggers
screen updates.
update base

pulls changes to fix Android input/framebuffer API interaction
fix device:init() bug on Android platform
handle Android app events in frontend/device code

Events have been passed to the frontend/device (or /input) code before.
Some of them have been handled in the FFI/input code, however. That
seems to be highly critical with regard to timing, though, so we just
let it enqueue the event for our code to process later. That way, a
mutex that locks the input event queue can be freed faster.
update base with simplified Android input code
Merge pull request #1217 from hwhw/master

Refactor refresh