Fix non-alphabetical record issues.

There's a subtle issue when creating literal records -- we might store
record fields in alphabetic order, but if the programmer has
side-effects in their field initializers, we should probably respect the
order of those effects.

Therefore, only the values of the record fields are shuffled around, not
the effects derived from their creation.
Add return-type annotations to C++ lambdas.

C++11's type-inference for lambdas is almost useless, it pretty much
always requires some kind of type annotion to do much of anything. This
change adds return type ([] () -> T {}) annotations to help the compiler
along a bit.