merge 8.5
WIP
Working code with no staging buffer use.
tidy things up
The outputStage field is now unused, so never allocate it.
Eliminate the use of a staging buffer in WriteChars().
Fix [22c10c8e79]: core-8-5: msvc6 build: "Side by Side" error
Refactor WriteChars() and WriteBytes() into simple wrappers of a common
routine Write().
Simplification and cleanup enabled by last commit.
Trial: Implement DoWrite() as WriteBytes().
Eliminate DoWrite().  It duplicates WriteBytes().
Refactor to eliminate the DoWriteChars() layer.
Fix [4b3b7a3082]: tcl8.5.15/generic/tclExecute.c:7713: array index before sanity check ?
Do not call updateStringProc directly.  We have TclGetString() for that.
The "channel" Tcl_ObjType is caching only.  It never needs an UpdateString routine.
It's also static to the tclIO.c file.
Simplify macro typecasting.
Fix [651e828a52]: Wrong Windows version reported for Windows 8.1
merge 8.5
Be sure to finalize the identity encoding.
Simplify the core output operations of channels.  Reduce duplicative and
dead code.