Merge from upstream

Merge in development work from square on Javawriter 3.x.  Merge was clean and simply fast-forwarded, since there are (yet) no internal google changes coming the other way.   Too many changes to describe here, as it's the active development branch.