Visual studio compatability

Visual Studio is unable to compile the current master due to two main issues:  Either having a recursive type as a struct, and eteratee is passing the reference 'step' to another call inside the closure as it is being assigned, which is apparently not allowed (though this is allowed in mono, as I confirmed it is compiling with mono).   Since the variable is being set before anything is happening, I 'fixed' the issue by using the evil default keyword, but since we're already passing in mutable references I assumed it was ok for now.  If this solution doesn't look acceptable, I'll spend some time thinking about a better idea. 

@dtchepak also confirmed these errors in Visual Studio.