Fix to dojo/store/Observable to properly allow wrapping an asyn source and 3 'virtual' stores: Map, Join, Reduce

Commit 1: Observable Deferred stores
The check for a promise was too deep in to allow for a queryUpdater to be created.

Commit 2: New 'virtual' Stores:
Map: maps one QueryResult to another, handles property renames, value calculations. always maps n-n.
Join: like a SQL Join merges two or more Stores into one based on some clause. maps any way the clauses determine
Reduce: introduces a store for aggregate functions. either ustom aggregate functions or one of the supplied ones (count, min, max, first, last, avg, mode, median).

Sidenote:
This being my first dojo experience, there might be some room for improvement that I'm oblivious of. For instance, I've put the new stores into dojo/store, which might be really unappropriate, in which case I'm truely sorry. Thanks for your patience.