fix handling of invalid UTF8 sequences

external data (and in bad cases our own) can contain invalid byte
sequences in UTF8 strings. A prominent example are file names.
There was a 1-off bug in calculating the allowed length for multibyte
chars, and the iterator was a bit too greedy when stumbling upon
invalid sequences, returning a single "invalid" char for a sequence
up to the point where it became invalid in calculation. Now, we present
one invalid char for the first byte of that sequence and then check
for a valid char starting with the next byte.
allow image widgets to do alpha-blitting

when the image (e.g. a PNG) does contain an alpha channel, that can
be honored by ImageWidget. It doesn't do so by default for compatibility
(arguably, we should change that in the future), it has to be enabled
by setting the "alpha" property to "true" (boolean, not string).
honor alpha when painting the dog-ear bookmark icon

allows for different icons making use of that. For our current icon,
it actually doesn't.

Fixes #402
Merge pull request #1295 from hwhw/master

fix handling of invalid UTF8 sequences
Merge pull request #1296 from hwhw/imagewidget_alpha

Imagewidget alpha