Protect against multiple uses of a CompileEnv with only one initialization.
Make TclFreeCompileEnv smarter about cleanup so all callers do not have to be.
Revise TclSetByteCodeFromAny() so that when hookProc raises an error, bytecode
is not generated.  This was rumored to cause crashes.
Shift more burden of smart cleanup onto the TclFreeCompileEnv() routine.
Stop crashes when the hookProc raises an error.