Previous version of code had registered the endpoint for the
connection object before initializing the variable store.  (We
shouldn't do this in case one side initializes itself and sends its
initialization onCreate message before loading variable store.)  This
commit loads peered/endpoint variable store before registering with
connection object.
Tests that can create externals inside of Waldo and return them outside of Waldo.
Added more tests using self: load self into external maps and lists, pass externals around and ensure can perform endpoint calls on them.
Started adding code for function objects.  Rephrased a test in
emit_utils to distinguish between function object calls and endpoint
calls using type dict of first child of call.  Added a placeholder
warning in case encounters a function object call.
To emit code for function objects, made a couple of large changes:

  1) Added a WaldoFunctionVariable.  This variable is a little
     different from others: it keeps a copy of the arguments that it
     takes that are external.  This way, it knows which arguments it
     needs to de-waldo-ify before calling and which it does not.

  2) Changed type signature for function objects.  Before, function
     objects had an additional layer of indirection in their input
     argument fields.  Ie,
     { ... In: {Type: [{ Type ....]}}}
     instead of
     { ... In: [{ Type ....]}

     Removed indirection, so now emits as second type.