Add a LazyIterable to the runtime in support of #1524
Change tests broken by using == against iterable enumerations { like, this }.
Fix #427
Make all methods that AbstractIterable inherits from Iterable final to try to avoid accidentally introducing subtle side-effect via iteration bugs.