Allow nested expansion of lambdas (patch needs to be cleaned up!)

- this patch allows the nested expansion of lambdas within expansion patterns

- It avoid crashing when pack expansions that refer to nested parameter packs occur within the expansion pattern

for e.g, consider (the nested lambda at 1 is part of an expansion pattern, and also contains its own pack expasion):

auto L = []<class ... Ts>(Ts&& ... args)
     [&]()
      variadic_foo(
        ([&](Ts&& ... args22)   // <-- 1
                 variadic_foo(args22 ...) + args)
                                    (static_cast<Ts&&>(args)...)
         ...);
  auto M = L('A', 3.14);
  auto N = M();