Stop ‘used once’ warnings from crashing on circularities

gv_check was only checking for stashes nested directly inside them-
selves (*foo:: = *foo::foo) and the main stash.

Other stash circularities would cause infinite recursion, blowing the
C stack and crashing.
[perl #2726] Prototype is not applied until BLOCK is defined

In the case of a sub definition with a prototype, the prototype
is not attached to the sub until after the body is completely
defined.  This means that any sub which calls itself will
not honor its prototype unless the prototype was declared prior to
the sub's definition.  Whether or not this behavior is desirable is
debatable, but its far too late to do anything about it other than
document it and test to make sure it doesn't change.
sv.h: Add comment about gv_check and SvIsCOW

So that future refactorings don’t make use of 0x00010000 on
hashes without modifying gv_check to account.