try to trap & fix lcd shows garbage bug

After trying in vain to repo this issue or days and days I have resorted
to trying to guess how to detect this issue and how to fix it; basically
this patch reads back each printable char we write to the display, and
if it didn't write properly it thinks we must be nibble shifted and so
writes a dummy nibble and goes back to try to write the char again.

This has many potential issues associated with it; first if we get a bit
error for a while and are not nibble shifted the we could leave nibble
shifted which is worse than before; second this requires a read after
each char is printed which makes our display updates take twice as long;
third, we are not sure this will fix the issue as I cannot repo it to
test the fix; and fourth it will not detect issues with non-printable
chars as these will not be stored in the LCD dram so we cannot check
them, hence these errors wont be found until we try to write a printable
char and fail, potentially skipping the non-printable write (so if we
are really unlucky and have a error on a non-printable char the screen
could still get all screwed up).

Anyway if the error is seen we should get a error message in the dmesg
log.

TLSX-207
TLSX-167