Refactoring hardware abstraction

This is a major overhaul of the hardware abstraction layer.
A few notes:

General platform distinction happens in
  frontend/device.lua
which will delegate everything else to
  frontend/device/<platform_name>/device.lua
which should extend
  frontend/device/generic/device.lua

Screen handling is implemented in
  frontend/device/screen.lua
which includes the *functionality* to support device specifics.
Actually setting up the device specific functionality, however,
is done in the device specific setup code in the relevant
device.lua file.

The same goes for input handling.
update to latest base

need Blitbuffer:viewport() for new hardware abstraction
Bugfixes: test leftovers, wrong paths
add wrapper for FFI input.open()
Merge pull request #1076 from hwhw/hal

Hardware abstraction: refactoring
update multiple screen regions
This is useful when updating keyboard and inputbox.
only update neccessary screen regions when typing with virtual keyboard
close reader config panel when touching reader menu
add fulltext search for EPUB documents
Merge pull request #1079 from chrox/fulltext_search

add fulltext search for EPUB documents
fix(screensaver): lastfile will be nil for fresh installation
fix(input): use elseif conditional logic in adjustTouchSwitchXY
Merge pull request #1080 from houqp/fix

fix kobo aura hd input handling
screenshot to PNG files by default
get rid of unneccessary requirements
update koreader-base
quit uimanager before run uimanager in test
Merge pull request #1082 from chrox/cover_50

screenshot to PNG files by default