feat($q): $q.all() now accepts hash

When waiting for several promises at once, it is often desirable to
have them by name, not just by index in array.

Example of this kind of interface already implemented would be a
```$routeProvider.when(url, {resolve: <hash of promises>})```, where
resources/promises are given by names, and then results accessed
by names in controller.

The CLA is signed.