SerialInput: allow to specify reading method

also add rfid device
LCD: fix wrong carp upon device opening
client: use http status codes as return values
remove obsolete call to substr
enable debugging in tests
client: fix missing status code return in synchronous mode
terminal: login works \o/
LCD: fix scrollbuffer management
client: always try to decode body from json

for example, in case of a failed login, the request will be answered
with a 40[13], but still contain a valid json response containing the
remaining attempts
LCD: various enhancements

* turn backlight on and off (dimmed)
* add noflush option for multiple lines
* default scrollbuffer to empty strings instead of undef
* enable debugging output
SerialInput: add getter for AnyEvent handle

the ae handle is needed to be able to enable and disable timeouts
dynamically
terminal.pl: improve and reorganize event-flow

* use logging
* dim display in case of inactivity
* dynamically enable and disable timeouts
* dynamically enable and disable device handler