#718 - Introduced TaskExtension which acts as adapter to channel API and Message/json based tasks. ApiBasedTaskExtension handles all requests for old-styled task apis. Yet to implement Messagebased extension methids
#718 - implemented json-based task extension. fixed task-metadata-loader to delegate to appropriate extensions to load and cache the metadata
#718 - extracted out task extension handler for version 1.0. Each handler is registered with the jsonBasedTaskExtension. appropriate handler is invoked based on the version implemented by the plugin
#718 - Changed the json format of task config. passing config, environment vars, working dir and console as part of request to plugin
#718 - Fixed failing tests. modified tests to use mock instead of stub
#718 - PluggableTaskService invokes validate through task extension. Changed json format for validation error
#718 - Created a ConsoleWrapper to be used by json based plugins. ConsoleForJsonBasedPlugin will be passed on in the request instead of the Console directly
#718 - defined taskentension as a bean on agent so we dont have to serialize it across. fixed few bugs for this story
#718 - some refactoring to remove duplicate code for invoking plugins, fixed associated tests
#718 - Plugin is marked invalid if exception occurs during on pluginLoad.
Fixing failing test
#718 - Re-implemented the way console logging happens from plugins

Before task run, builder sets the execution context on JobConsoleLogger
Plugin gets hold of the logger through JobConsoleLogger.getConsoleLogger and performs logging operations
On task completion, the context is unset from JobConsoleLogger
#718 - Splitting JobConsoleLogger to avoid setting/unsetting of context from plugin.
Fixed merge conflicts.
#718 - Request params on GoPluginApiRequest is back to being a map containing all strings
#718 - Fixed failing tests
Due to some changes introduced as part of resolving merge conflict, the expectations changed. As such these tests were failing. Have fixed them with the new expectations.
#718 - Removed the usage of Property.DISPLAY_NAME and Property.DISPLAY_ORDER for task plugin.
They were being used in the old plugin API. But since the plugin author sends the template for the plugin, it's not required.
Merge pull request #742 from mdaliejaz/add_message_based_task_plugin_api

Added message based task plugin api