Refactor discovery to use invokeInWorkspace 

This is a major set of changes and should be released as a minor version.

 - Refactor `invokeInWorkspace()` to support all `dataSource` methods
 - Implement `getSchema()` and `discoverModelDefinition()` using `invokeInWorkspace()`
 - Add new `dataSourceDef.createModel()` to create model definitions + configs using a discovered model definition from `discoverModelDefinition()`

/to @bajtos @raymondfeng 
/cc @seanbrookes 
Interesting. It did not work this way when I was writing this code. There is a unit-test that is passing even with your new code, so my understanding of this problem is not correct. Anyways, as long as the tests are passing, then we should be fine.