add Db method that can return multiple result sets

The method returns a Result instance that has a Read() method. This
implementation already exists on master and will be a part of 3.*. To get
this out the door sooner, this commit reimplements it on top of the 2.3.1
tag and will be used to create a 2.4.0 release.