bmp loader: Fix loading of monochrome/greyscale BMPs with newer headers.

The code expected the color table at offset 54 (14+size of BITMAPINFOHEADER),
which was after the BITMAPINFOHEADER header. However, newer BITMAPINFOHEADER
versions exist which have more fields before the color table. Fix this by
explicitely seeking to the color table.

Change-Id: If1dfc77e7485e5a9e0bc0e7f577152da9358bd71
icons: When loading mono icons keep them in mono format.

This enables monochrome icons them to work with the invert line selector.

Change-Id: Ic3e9219e93b4879166a10180e6067446a84a62bf
cuesheet: Search for /path/to/music.mp3.cue as well if all fails.

Change-Id: If58ea7c7b94de54f6d9b014f069807bb88c6a147
cuesheet: Fix possible buffer overflow with long filenames.

Change-Id: I49fe6da35057895d3c5a08a8723afe41eef7afe8
cuesheet: Fix another possible buffer overflow with long filenames.

Change-Id: I9d8fa8fcb0a872f688664c53881fde93f2de9436
scroll engine: Factor out renderer function so it can be called by lcd code.

This is used by lcd_puts_scroll_worker() to render the line immediately
instead of waiting for the next scroll tick when only the text was updated.
Previously lcd_puts_scroll_worker() did not render anything in this case
which could lead to visible blinking.

This fixes blinking scrolling lines with dynamic text in the skin engine.

Change-Id: I475bde8c8eb7c92f505e3c5ecf4d32bb90690536
Don't use core_alloc_maximum() in usb_storage.

usb_storage needs a fairly reasonable amount of memory. Allocating
what we need and no more allows other (future) USB drivers to get
something too, and is much cleaner in general.

Change-Id: Iec9573c0f251f02400f92d92727cbf2969785de0
put_line/scrolling: Make the scroll engine inform custom scrollers about start/stop of scrolling.

With the new lcd_putsxy_scroll_func() code can register custom scroll functions
(put_line() makes use of that). In order for the custom scroller to be able
to properly manage its userdata pointer (set via struct scrollinfo::userdata)
the scroll engine must inform the scroller about start and stop of scrolling.

To inform about start the lcd_scroll_* functions now return true when
the line will scroll. To inform about stop the scroll engine calls into the
scroller one last time, with the text set to NULL.

put_line() can use this to release the userdata registered per scrolling line
so that it can be recycled.

This fixes that some scrolling lines became glitchy after some time because
the userdata was recycled too early.

Change-Id: Iff0a6ce2a4f9ae2bada1b8e62f4f5950224942a9
Fix remote warnings and charcell reds, and remove minor left-over tuff.

Change-Id: I10987ea9fcad94d502afd4ae4a80ab9022c75d2e
Touchscreen: Show a line separator in lists.

This patch adds a configurable line separator between list items, very
similar to lists in Android. Additionally, below the list item there is a
thicker line. It can be disabled in the settings. Its color can
be configured as well.

TODO: greyscale displays not handled so far

Change-Id: I005313b0d8f5ecd15864bf20e66ea4e3390d8b7d

Conflicts:
	apps/gui/line.c
	apps/menus/theme_menu.c
	firmware/export/lcd.h
Merge branch 'master' into lab-general
Update chinese-simp translation

Change-Id: I39b428fd4d5a746a644e25edf6c0204d1832b52a