(PUP-1144) Make variable name checking stricter

The fix for PUP-1144 relaxed the rules for variable checking.
This reintroduces checking but done right. It is now possible to
start the *first* name segment with an underscore. Subsequent
segments must start with a lower case letter.

Legal:

* $_a
* $::_a
* $aA
* $aA::aA

Illegal:

* $a::_a
* $A
* $a::A