Implement method chaining (object-oriented notation)

This patch allow object-oriented notation for all iterators:

    range(10):map(xx):filter(xx):totable()

Generated assembler code has no difference with the original
functional notation. Incompatible API changes:

 * A ``gen`` was wrapped into Lua table in all functions/methods,
   so please do not expect that iter({1, 2, 3}) will return exactly
   same values as ipairs({1, 2, 3})
 * Extra {} braces are no more required for zip, chain, is_prefix_of
 * iter() now supports __pairs and __ipairs on all Lua versions

Thanks for Antal Szabó for the great idea and his initial prototype.
Closes #1