Some cleanup, and introduce move semantics and perfect forwarding for TEnumerator<T>, TEnumerable<T> constructors (should give some kind of performance improvement?)