Work in progress reworking how literals are stored.  First effort is
replacing the string based local custom LiteralTable for per-CompileEnv
literals with standard pointer based Tcl_HashTable.  Contrary to comments
the literal table plays no role in value sharing.  Its sole purpose is
to eliminate dup references in the literalArrayPtr.

In current state, code suffers from mem leaks and panics.  At least
partially related to Bug 3607246.
Fix for Bug 3607246 closes the memleaks and stops the panics.
Restore the "find-only" mode of TclCreateLiteral().
Restore the optional return of a (LiteralEntry *) by TclCreateLiteral so
that refCounts can be incremented only when circumstances warrant.
Simplify the TclCreateLiteral() interface.  Save the complexity for within
tclLiteral.c where it is needed.
Now change to store a simple array of (Tcl_Obj *) literal values in CompileEnv.
WARNING!  This will break compat with the TclPro tclcompiler app, and likely
it successors.
msvc compiler warning: signed-unsigned mismatch.
3607372 Correct literal refcounting.
When possible, move literals instead of copying them.
Don't scan the whole literal list seeking the one value that can cause a 
circular reference, when we already have the machinery to look it up directly.
merge trunk
Bring over the literal reform ideas.