Make first work like expected

It took me quite a while to get that first wasn't working like expected for queries with multiple resutls. I got a
`Attempt to initiate a new Adaptive Server operation with results pending (TinyTds::Error)`
Probably I should do a `cancel` after, but than I have to save the result in a variable which makes it less expressive.

Next to that I found out that you could not run `each` after you ran `first`. To make the Result object to behave more like an Enumerable I propose this change which also improves performance compared to what `first` does now.