Fixes bugs in PORTUGUESE-P.

STRING-WORDS had a bad regex.

The rest is refactoring, and a tweak to DETECT-LANGUAGE to prefer
float versus rational arithmetic, just because Elisp makes me
paranoid that CL might decide to stupidly round everything to zero.