[cs] use native arrays for wrapping captured variables

See #3548. In our code that uses closures quite a lot, we got around 30% performance increase using this patch.

I still don't really like how it looks (i.e. target-specific code in `filters`), but I don't know how to organize that properly. Still I think it's fine, because the target-specific code is incapsulated in an object, so I'm gonna merge it after travis green light.

Next step WRT closures would be not to wrap variables that are not written which would be even more significant performance wise, but that requires more deep refactoring.