Allow provides to be a set and results to be a dictionary

Instead of forcing task provides to be a tuple or list and
using the corresponding numerical index to determine how to
interpret the tasks results we should also allow for the task
provides to be a set and then allow for the tasks result to be
interpreted as a dictionary.

Fixes bug 1221998

Change-Id: Ibae689e7975d6782aa248d2b6e3691c44a89ef9f
Merge "Allow provides to be a set and results to be a dictionary"