Allow DataSource to take a DataSet object rather than multiple arguments...

....

Clever/hacky implementation thanks to Tom & Omede
It's a clean API though :)