Refactor jsonnet desugaring to avoid stack overflow.
Refactor jsonnet desugaring to avoid stack overflow.

Default thread stacks on Windows are 1Mb and on Macos are 512Kb
(except for the main thread which is 8Mb) and we've been seeing stack
overflows on these platforms.  It appears that recursively calling
desugar consumes over 17Kb of stack, so the recursion doesn't have to go
very deep before it overflows the stack.  This refactoring shrinks the
stack usage and lets our jsonnet run on Mac & Windows.

sparkprime/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet,sparkprime/jsonnet,google/jsonnet,sparkprime/jsonnet,google/jsonnet,google/jsonnet,google/jsonnet,google/jsonnet,sparkprime/jsonnet,google/jsonnet