Deparse.pm: Remove special \0 marker

In 4b1385ee6 I did not realise we already had \cK, which served almost
the same purpose.
Deparse.pm: Remove temp pre-PADNAME code

added in d4f1bfe749f, which got merged before the PADNAME changes.
[perl #123357] Fix deparsing of $; at stmt end

Instead of sometimes appending ; to statements and then removing it
later, to avoid doubling it up, *only* append ; to a statement when
actually joining them together or emitting them.  That fixes bugs with
do{$;} becoming do {$} and ‘$_=$;; $;=7;’ becoming ‘$_=$; $;=7;’.

I also removed the boilerplate from pp_stub, since it was redundant
(and slow) and also partially wrong.  The $name var was bogus.
dump.c: Don’t dump CvOUTSIDE SV when there is none

$ ./perl -Ilib -MDevel::Peek -Mfeature=:all -Xle 'my sub f; Dump \&f'
SV = IV(0x7fd7138312b0) at 0x7fd7138312c0
  REFCNT = 1
  FLAGS = (TEMP,ROK)
  RV = 0x7fd713831b90
  SV = PVCV(0x7fd7138303d0) at 0x7fd713831b90
    REFCNT = 2
    FLAGS = (CLONED,DYNFILE,NAMED,LEXICAL)
    COMP_STASH = 0x7fd713807ce8	"main"
    ROOT = 0x0
    NAME = "f"
    FILE = "-e"
    DEPTH = 0
    FLAGS = 0x19040
    OUTSIDE_SEQ = 187
    PADLIST = 0x7fd7134067e8
    PADNAME = 0x7fd713411f88(0x7fd713406d48) PAD = 0x7fd713807e68(0x7fd71340d2f8)
    OUTSIDE = 0x0 (null)
    SV = 0

That final ‘SV = 0’ is very confusing!
Don’t deparse formats with #line directives

$ perl5.20.1 -mO=Deparse,-l -e 'format =' -e\@ -e'$foo' -e.
format STDOUT =
@
$foo
.
-e syntax OK
$ ./perl -Ilib -mO=Deparse,-l -e 'format =' -e\@ -e'$foo' -e.
format STDOUT =
@

#line 3 "-e"
; $foo
.
-e syntax OK

The second is not valid syntax.

I probably broke that when fixing BEGIN blocks.
Update Encode to CPAN version 2.67

  [DELTA]

$Revision: 2.67 $ $Date: 2014/12/04 20:13:00 $
! t/taint.t
  Now skips nonexistent methods like Encode::Detect->encode() should
  that be installed.  This resolves RT#100105.
  https://rt.cpan.org/Ticket/Display.html?id=100105
Syncing back Changelog to be consistent with CPAN release

Whitespace corrections; update perldelta.

For: RT #121671
Locale-Maketext 1.26 is now on CPAN
Return fresh scalar from join(const,const)

$ perl5.20.1 -Ilib  -le 'for(1,2) { push @_, \join "x", 1 } print for @_'
SCALAR(0x7fb131005438)
SCALAR(0x7fb131005648)
$ ./perl -Ilib  -le 'for(1,2) { push @_, \join "x", 1 } print for @_'
SCALAR(0x7fe612831b30)
SCALAR(0x7fe612831b30)

Notice how we now get two references to the same scalar.  I broke this
accidentally in 987c9691.  If join has two arguments, it gets con-
verted to a stringify op.  The stringify op might get constant-folded,
and folding of stringify is special, because the parser uses it
itself to implement qq().  So I had ck_join set op_folded to flag
the op as being a folded join.  Only that came too late, because
op_convert_list(OP_STRINGIFY,...) folds the op before it returns it.
Hence, the folded constant was flagged the wrong way, and stopped
being implicitly copied by refgen (\).
op.c:fold_constants: Simplify OP_STRINGIFY logic

Don’t put the same condition in two places.  We are already using a bool-
ean.  We can put the result of the condition in it.
op.c:fold_constants: Remove OP_RV2GV/newGVOP

OP_RV2GV is not foldable, so it never reaches this code, which
goes back to 79072805 (perl 5.0 alpha 2).  Even back then it was
unreachable.
Correct dependencies for charclass_invlists.h

regen.t should fail if Unicode tables are updated and this header is
not regenerated.

See commit 713f4b7fa and the thread beginning at
<20141204124705.472.qmail@lists-nntp.develooper.com>.
Restore profile dump under PERL_DESTRUCT_LEVEL

$ ./perl -Ilib -DP -e0
filter_add func 1000dfa20 ()
filter_read 0: via function 7f8fd302fe88 ()
filter_read 0: via function 7f8fd302fe88 ()
filter_del func 1000dfa20
EXECUTING...

    1 nextstate
    1 enter
    1 leave
$ PERL_DESTRUCT_LEVEL=2 ./perl -Ilib -DP -e0
filter_add func 107b81a20 ()
filter_read 0: via function 7f81e882fea0 ()
filter_read 0: via function 7f81e882fea0 ()
filter_del func 107b81a20
EXECUTING...

The list of ops executed is omitted if I set PERL_DESTRUCT_LEVEL=2.
This was probably broken by bf9cdc68d2.
Remove branch seemingly untaken

An HV* that is not an SVt_PVHV? Maybe I don't have sufficient fantasy.
This branch goes back to 1994, so things have changed ... a bit since
then.
Revert "Remove branch seemingly untaken"

This reverts commit 9349a6bbb9de151e5385038b962ceff7c7278b53.

It is taken. Sigh. I'm sorry.
Deparse predeclared prototyped subs

A predeclared sub without a prototype works fine:

$ ./perl -Ilib -MO=Deparse -e 'sub f; sub f{}; foo()'
sub f {

}
foo();
-e syntax OK

A prototyped sub with no predeclaration is fine:

$ ./perl -Ilib -MO=Deparse -e ' sub f($){}; foo()'
sub f ($) {

}
foo();
-e syntax OK

A prototyped stub is fine:

$ ./perl -Ilib -MO=Deparse -e 'sub f($);  foo()'
sub f ($);
foo();
-e syntax OK

Only a predeclared prototyped sub seems to have trouble appear-
ing properly:

$ ./perl -Ilib -MO=Deparse -e 'sub f($); sub f($){}; foo()'
sub f;
foo();
-e syntax OK

The code that searches the stashes (stash_subs) was assuming that any-
thing of type B::PV was a prototype.  In this case, the stash entry
started as a string and then got ‘downgraded’ to a reference, so
internally it is of type PV (which can hold a ref), which B represents
as B::PV, so the assumption that a PV is a prototyped stub is wrong.
Deparse PVMG stubs

Creating a weak reference to a stash entry will cause it to be of type
PVMG, if it was not a GV already.  B::Deparse was trying to determine,
based on the internal SV type, whether it had a sub stub.  It should
be checking flags instead, otherwise valid stubs get omitted.
printf type-matching continues. again.
Unused var.
Unused hv_store() result.