Report `ping` errors as HTTP 200

Modify `testConnection` to distinquish between project-level errors
(e.g. missing module dependencies) and datasource-configuration errors
(e.g. invalid credentials). The latter is reported in an `error`
property sent back in an HTTP 200 response.

Rename the error returned by `invokeMethodInWorkspace` to
`InvocationError`. This make it easy for consumers to distinquish
between errors thrown by Workspace API and errors thrown by the project.