Change the encoding of result indices. Now, we would count all parameters there, not just
semantic results.
The rationale for this change is as follows: the interface type of linear maps (pullback in
particular) depends on whether there are semantic result parameters. E.g. the pullback type
for (T1, T2) -> R might be (R.Tan) -> (T1.Tan, T2.Tan) or (R.Tan, T2.Tan) -> (T1.Tan) depending
on whether T2 is a semantic result parameter (inout or class-bound) or not.
There was no way to deduce this just from the generic function signature and param / result indices
as previously result indices included number of semantic result parameters only (first semantic result
parameter, second semantic result parameter and so on). E.g. in the example above we might have result
indices to be (0, 1), however, this will not give any information if T1 or T2 is a semantic result
parameter type given a generic signature.
This change extends result indices. Now their capacity is assumed to be number of results plus number
of all function parameters and we encode indices of all parameters that are assumed to be semantic
result parameter. So, in the example above we will have result indices to be (0, 1) if T1 is a semantic
result parameter or (0, 2) is T2 is a semantic result parameter.
This allows one to correctly deduce the generic linear map types for reabstraction thunks and also keep
a variety of other invariants.