Make ‘require $tied_undef’ behave consistently

As of f04d2c345 perl does not give uninitialized warnings for ‘require
undef’.  But the check was not happening soon enough, causing tied
variables to behave erratically:

$ ./perl -Ilib -we 'sub TIESCALAR{bless[]}sub FETCH{undef}sub STORE{}tie $x,""; $x="a"; require $x'
Use of uninitialized value $x in require at -e line 1.
Missing or undefined argument to require at -e line 1.

(Uninit warning where muggle variables lack one.)

$ ./perl -Ilib -we 'sub TIESCALAR{bless[]}sub FETCH{undef}sub STORE{}tie $x,""; $x=3; require $x'
Invalid version format (non-numeric data) at -e line 1.

(undef being treated as a version string.)

We have to call get-magic on the argument before we check its
definedness.
[perl #122498] Odd error message from m/(?(??{}))/

I know this code is invalid, but the error message makes no sense:

$ perl5.14.4 -e 'm/(?(??{}))/'
Sequence (? incomplete in regex; marked by <-- HERE in m/(? <-- HERE (??{}))/ at -e line 1.

Not exactly logical, but close....

$ perl5.18.2 -e 'm/(?(??{}))/'
The regex_sets feature is experimental in regex; marked by <-- HERE in m/(?( <-- HERE ??{}))/ at -e line 1.
Syntax error in (?[...]) in regex m/(?(??{}))/ at -e line 1.

As of 5.18, it makes no sense at all.

It should probably say ‘Unknown switch condition’.

This commit makes it do that.  The problem was unintentional fall-
through to the wrong switch condition.

In fact, it could get quite confused:

$  ./miniperl -Ilib -e  'm/(?(? [a] ])/'
The regex_sets feature is experimental in regex; marked by <-- HERE in m/(?( <-- HERE ? [a] ])/ at -e line 1.
Unexpected character in regex; marked by <-- HERE in m/(?(? <-- HERE  [a] ])/ at -e line 1.

Because it was assuming that the character after the first ? was [
and then trying to parse an extended charclass from the second ques-
tion mark.