Support binding a temporary returned from a spawn

- Fixes:
  const T& t = _Cilk_spawn foo(), and
  T&& t = _Cilk_spawn foo()

- Moves the receiver into the capture-struct, rather than placing is
  separately into the helper function's signature.

- Also adds a new "receiver temporary" passed into the helper, since the
  memory allocated for a temporary object should live in the spawning
  function, not the helper.

- This will require some thought when we come to merge this work with
  the new captured statements design:

  * The receiver stuff should move out of CapturedStmt and into the
    CilkSpawnStmt
  * Not sure if receiver should be in the capture list, or just manually
    placed into a field of the RecordDecl... TBD
  * We will need to specialize the CGCapturedStmtInfo for spawns.