* Extract for-of iterator handling to a helper
Dis greatly recudes the code size when for-of is used multiple times across the
codebase. Also, makes it easier to read what's happening in a compiled loop.
* Unify spec and loose code
* Legacy implementation fallback
* Update tmp var name
* Updates from review and after rebase
* Fix rest parameters indexing with TypeScript 'this parameter'
The TypeScript [this parameter][0] is a fake parameter and should not be
taken into account when counting the function parameters. This patch
skips it by using the condition taken from the `transform-typescript`
plugin.
Note: since the `transform-typescript` plugin is removing this kind of
parameter, including it before the `transform-parameters` plugin solves
the issue. This patch fixes the issue in other cases.
[0]: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters
* nit: improve the 'this parameter' detection condition
* improve performance by checking the parameter list length before
accessing it
* simplify the test a bit by using the `isIdentifier` second
parameter