Added message based task plugin api

TaskExtension adapter handles both api and json based task plugins. Handled few error scenarios. 

Still working on json schema validation for json data being sent as a part of request and response for various requestTypes. Will send another PR for the same.
This is the only think in this PR that I'm concerned about. Rethink this change from <String, String> to <String, Object>. Talk to @pshivana. I'd use the ```@Load``` mechanism instead to provide a way to get this, or the ```GoApplicationAccessor```. I know it changes per job, but only one job runs in the agent at a time.

The issue I have with changing it to Object is that this is no longer serializable. If we want to move plugins out into a different process, we cannot. Ideally, this wrapper should not be an object at all (as we've spoken). It should be a message based API as well, that the plugin can use. But, I know why this is done (for convenience of the plugin developer) and I agree. But, I don't think this should be passed in through the request params.