patchText() and valid() finalized

- Added all unique unicode symbols in Player's Handbook 1 to the
replacement list in patchText()
- Moved the digit check from valid() to only one case in patchText(),
which prevents connectWords() from thinking anything with a digit is a
valid word
- valid() now splits words with separators and validates them
individually
- valid() now checks fully uppercase words with both all letters lowered
and all but the first lowered (GEOFF -> Geoff or geoff)