Cleanup sceFontNewLib() parameter handling.

It should error out without alloc/free funcs, and cap numFonts to 9, per
tests.  Most games pass these and use numFonts = 4.
Allocate the right amount of font memory.

But it should be in multiple blocks...
Return an error on font allocation failure.

Some game might actually expect this code, you never know...
Populate the native font lib struct.

For now, this makes things a lot easier to compare (getting as much info
as possible out of these structs.)
Improve error codes in sceFontOpen*().

Fixes some unlikely cases of crashes as well.  I think there are leaks
here...
Pass in the font open mode for easier tracking.

Mostly concerned about handlers actually doing something...
Allow open fonts in a few more calls.

It turns out if you open the same internal font twice, they both work
until you close both of them (it's reference counted, but the font handles
are different.)

Anyway, these funcs seem to crash on a PSP when used with a non-open font
so there's not a ton of risk here.
Merge pull request #5552 from unknownbrackets/font

Improve error codes in sceFont