FetchMultiple returning unlimited number of types (1/2)

This change is intended to remove the current limit of the max of four types returned by FetchMultiple overloads. Types expected to be created are provided in the second argument and their precise order in the array must match the multiple resultsets returned by the SQL query. The method's return value is a dictionary whose keys are the types returned and elements contain lists of objects created from resultset rows.