Allow further deduction from recursive conditional returns

This patch includes:

1) Getting some older clang tests to compile that broke since we allow expressions as body
2) Move the LambdaScopeInfo cache into the LambdaClass so now it can be used for both generic and non-generic lambdas (this is useful for return type duction from conditional expressions)

3) Allow further forms of return type deduction through recursive conditional expressions by intercepting the conditional expression prior to Sema's ActOnReturnStmt, in TransformReturnStmt
 - now the following deduces:
    auto L = [](auto f, auto n)
          n <= 0 ? n + 1 :
             ([n](auto f2) n <= 0 ? n + 1 : f2(f2, n - 1) * n)(f);
    auto Fact = L(L, 3);
 - The algorithm for return type deduction from expressions involving conditional operators with a recursive call is:
    - the non-dependent case has to be the TRUE branch
    - assume the type of the TRUE branch as the type of the function
      - make sure it is deduceable against the auto pattern (i.e. -> auto* does not deduce int)
      - rebuild the FALSE branch if it is dependent and contains a dependent call expr
      - then remember the type we assumed the function returned (Even if it was not necessarily used to figure out the type of the False branch - at this time I'm not going to try and fix this) and make sure that all future type deductions for this function match this type exactly.