Restrict the valid identifier syntax, fix some identifier bugs.

Fixes:
    * Length-one identifiers are now restricted to [\p{XIDS}\p{POSIX_Punct}\p{POSIX_Digit}\p{POSIX_Cntrl}]
    * The latin-1 range behaves the same regardless of the status of 'use utf8'
    * Identifiers that start with ASCII letters can be followed with XIDC characters
Documentation updates for the previous commit
Fix several differences in the parsing of $.. and ${...}

Namely:
    * The first character in ${...} used to have no restrictions
    * ${foo:bar} used to be legal
    * ${foo::bar} worked, but ${foo'bar} didn't

And possibly other subtle, so far undiscovered bugs. This was
resolved by simply using the same code for both things.

As a side-effect, this removes the 'Illegal character %s (%s)
in variable name' error introduced earlier.
toke.c: Made S_scan_word use S_parse_ident.

S_scan_word also replicated a large portion of the ident-parsing logic.
utf8.h: Restore isIDFIRST_lazy_if to treat the non-UTF case as ascii, rather than latin1
Update the pod for the recent identifier changes
toke.c: Stop parse_ident from punishing the non-utf8 case.

As a leftover from before the refactor, parse_ident was making
identifiers under 'no utf8;' go through the entire loop for each
character. Originally this way to stop it from glossing over
the [a-zA-Z]\p{XIDC} case, but since the utf8 check comes first
now, it's no longer needed; we can enter an inner loop until
there are no more WORDCHAR_A characters.
Simplify the rules for package delimiters.

This disallows multiple double colons (foo::::::bar) and following double
colons with a single quote (foo::'bar). This leaves TODO, which is disallowing
package Foo::;