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()
Add support for files with multiple extensions (like .fb2.zip).
Move credocument before pdfdocument in the registry.
Add support for .fb2.zip files.
Make the suffix lowercase before comparing.
Merge pull request #1078 from erosennin/fb2.zip

Add support for .fb2.zip files.
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