Refactor workflow module to allow multiple kinds of inputs.
Refactor duplicated get_display_name code out of galaxy.model.

Also added test cases. Need to use this downstream in for dataset collections.
Rebase into dataset collection model layer.
Rebase into dataset collection tool layer.
WIP: Dataset collections, extend workflow handling to allow tools with data_collection parameters.