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 
I find it odd that the workspace has to know what is the default schema for every supported connector. Can we move this code to individual connectors instead?

I am fine with doing it outside of this PR, i.e. keeping the code here for now, modifying all connectors first, and removing this code only after all connectors are fixed.

/cc @raymondfeng