Validate posted schemas

This PR attempts to define what json is valid for posting to the workflow service.  The schema I present here is based in part on some work already done by @mark-burnett, but deviates from that work somewhat.  Some areas that I've already identified for discussion are:

* minItems and minProperties values
* whether execution parameters should share the same validation as inputs (via the definitions/inputDictionary type)
* whether tasks and edges in the top-level should be replaced with a "workflow" property of type definitions/workflow

Existing test cases were updated to support the definition of tasks and the removal of the environment property at the top-level.

Closes #65 
I think we need to keep the `InvalidWorkflow` exception class for now.  It is still being used in the backend to validate dag task names when a workflow is posted.  We might also add additional validation constraints that we cannot constrain in the json schema, but wish to catch at the time the workflow is posted.