Fixed #349: workflow model -- add ResourceCollection, modify ResourceAssignment

A ResourceCollection belongs to a Workflow, holding multiple Resources.
A ResourceAssignment now connects an InputPort to a Resource or a ResourceCollection.

An entire Workflow should have only one ResourceCollection that has multiple Resources.
Other ResourceCollections can have only one Resource.

Mapped to the Workflow designer UI in the future, a ResourceCollection can be represented as a "box".

Now the components of a Workflow include:
- Explicitly referencing the Workflow: WorkflowJob, ResourceCollection
- Implicitly referencing the Workflow as a singleton: InputPort, OutputPort
- Implicitly referencing the Workflow as a connector: Connection, ResourceAssignment (these two are validated in the serializer, to ensure the objects they connect belong to the same Workflow)

A minor change in Workflow Validation and WorkflowRun Creation algorithms.

Updated the tests.