Include the index of the failing Promise to when

Also you can now pass a NSDictionary to all/when, the returned Promise is then fulfilled with a dictionary with the same keys that correspond to the resolutions of the input promises.

Closes #31