Write a spec for Enumerator::Lazy
Write a spec for Enumerable#lazy
Implement Enumerable#lazy
Write specs for Enumerator::Lazy#initialize
Implement Enumerator::Lazy#initialize
Fix Enumerator#initialize for 2.0
Write specs for Enumerator::Lazy#{map,collect}
Implement Enumerator::Lazy#{map,collect}
Write specs for Enumerator::Lazy#force
Implement Enumerator::lazy#force
Write specs for Enumerator::Lazy#take
Implement Enumerator::Lazy#take
Adjust Enumerable#first for Enumerator::Lazy#take

Enumerator::Lazy overrides Enumerable#take.
Tag failing Enumerator::Lazy#take specs
Write specs for Enumerator#size
Implement Enumerator#size
Fix and add specs for {Enumerable::}Enumerator#each
Fix {Enumerable::}Enumerator#each

* Should return self when not given a block
* Adjust for 2.0
Adjust and Add specs for Enumerator::Generator#each
Fix Enumerator::Generator#each for 2.0