Partially fix libc++ (clang) build.

+// This synonym is not in utils.hpp because libc++ (Clang-affiliated std C++ lib)
+// needed std::queue and its argument types to be included at the time of
+// synonym definition (or similar), which we don't want to do in utils.hpp
+// because it costs compilation time for the majority of our .cpp files, which
+// don't use this.
Fix install info

Lambdas in Clang:
"the state of lambdas in 3.0 is "not implemented".
Only some small parts of the lambda functionality
had been implemented at that stage & we forgot to
turn those off before we 3.0 was released"
http://llvm.org/bugs/show_bug.cgi?id=11359#c6
change hack to work around Clang bug

The most recent array-of-lambdas construction
was causing Clang to generate wrong code for me
(I boiled it down to:
http://llvm.org/bugs/show_bug.cgi?id=15029
) so I created a different hacky method for defining
named scenarios, that uses the preprocessor a bit.
fix Clang build

Clang (3.2)'s and GCC (4.7)'s name lookup are a little different:
in boost::hash<>, GCC could find boost::hash_value<std::tuple<..>>
and Clang couldn't; this patch is a way to make both compilers work.

I'm still getting occasional runtime segfaults:
 * build with Clang
 * ./lasercake flat
 * go forwards (hold 'x') for a few hundred frames
     (amount of time to segfault varies between nothing and about
      1000 frames)
 * ./lasercake flat --no-threads  seems *not* to segfault in this way;
      so it could, say, be Clang's thread-local storage impl
      (__thread / thread_local) that's at fault.  GCC works fine.
 TODO: debug that.