Experimental mush of knockout update, featherweight

This was an exploration of on-the-fly mapping of JS properties, pre-processing the 'value' and 'select' bindings in KO. The overall strategy hinges on attaching parent paths and child property names to each potentially writable element in the JS tree, which doesn't work on JS primitives (strings, booleans, numbers).

I'll try an alternate path by wrapping these in proper String, Number, and Boolean instances. Just wanted to capture the code in its current state.
Using proper JS objects to add context path+names

This is an ugly hack to preserve context information (parent path and child/property name) for on-the-fly wrapping of values in the modelview.  This (or something similar) is necessary since native String, Number, and Boolean objects are immutable -- they won't accept new properties, and you can't update their values directly without creating a new object.
Test of save w/o encoding (much faster)

At this point, I have pieces of the solution for very large studies.  Committing this branch as a record, but it will mostly serve as a scrap heap to be picked over for ideas and minor bug fixes.