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