Multi-result set support

Added support for multi-result set database queries.

Usage
```
private string _sql = @"SELECT * FROM WebOrders w INNER JOIN Address a ON a.Id = w.DeliveryAddressId WHERE OrderId = @0
						SELECT * FROM WebOrderLines WHERE OrderId = @0 AND CustomerId = @1
						SELECT * FROM ContactDetails WHERE CustomerId = @1";

private readonly Database _db = new Database("Shop");

var result = new WebOrder();

using (var multi = _db.QueryMultiple(_sql, 12345, 67890))
{
	result.WebOrder = multi.Read<WebOrder, Address, WebOrder>((w, a) => { w.Address = a; return w; }).Single();
	result.WebOrder.OrderLines = multi.Read<WebOrderLines>().ToList();
	result.ContactDetails = multi.Read<ContactDetails>().ToList();
}

return results;
```