An improved fix for the previous patch (i.e. allowing nested lambdas to refer to previous lambda parameters in decltype)

This patch allows the following:
[](auto a)[](auto b) ->decltype(a) b;
And also
[])(auto a)[=](auto b) ->decltype(a) b + a;

Whereas the previous patch only allowed the latter.

As far as implementation, instead of dumping all the captures
in the instantiation scope, we climb up the nested lambda chain
and introduce the parameters of all enclosing specializations (since a nested lambda can not be specialized, unless its parents are all specialized) into the instantiation scope so that decltype can refer to them.