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.
Use iPtr field instead of source field to mark a CompileEnv as uninitialized.
envPtr->source == NULL can actually be valid (at least when merging forward).
Shift more burden of smart cleanup onto the TclFreeCompileEnv() routine.
Stop crashes when the hookProc raises an error.