Optimize flat_map to iterate once instead of twice
Merge pull request #3066 from sferik/flat_map

Optimize flat_map to iterate once instead of twice
Added specs for rb_io_taint_check().

Added for #3057.
Implement rb_io_taint_check().

Unlike as the name might suggest this function checks if an object is frozen or
not. The tainted status is completely ignored. See
http://rxr.whitequark.org/mri/source/io.c?v=2.1.2#600 for the MRI reference
code.

This fixes #3057.
Fixed updating gems list.
Added Rubinius.lambda.
Removed not_compliant_on :rubinius guards for language/variable specs.
Added evaluate helper for method definition and parameter specs.
Added method definition and parameter specs.
Added multiple assignment specs.
Rewrote Method#arity specs.
Rewrote Proc#arity specs.
Rewrote lambda, -> {} specs.
Rewrote UnboundMethod#arity specs.
Added specs for **obj in Hash literals.
More masgn spec improvements.
Extracted coerce_to exception to a method.
A few more masgn specs.
Added keywords, arity to CompiledCode.
Fixed {Method, Proc, UnboundMethod}#arity.