More fixes for errors and multiple result sets

1. If the first result set is an error, still construct a result object
as there may be further result sets, e.g.
```SQL
select 1/0 as [infinity];
select 'This message should be returned' as [message];
```

2. Secondly, fix a case where a spurious result set is produced
following multiple errors:
```SQL
select 1 as i;
raiserror('Error #1', 16, 1);
raiserror('Error #2', 16, 1);
select 'You should not see a blank result set before this message' as
[message];
```