Fix stack corruption from OSK, improve UX a bit

This makes several changes to the OSK:
 * Limits the length of the outputted text correctly as the PSP firmware does.
 * Validates parameters per the actual PSP.
 * Adds some reports for unexpected situations that aren't supported.
 * Makes uppercase swap keyboards, rather than insert an uppercase version of the selected character.
 * Allows prefill when the game requests it.
 * Shows the selected key in red (instead of hard to read grey), and shows the to-be-inserted character in a fading color (so it's clear it's not yet inserted.)
 * Also centers the characters so they line up better and look better when swapping upper/lowercase.

-[Unknown]