feat(Public API, AbstractComponent): adds when, whenAll, and whenAllSync to components

To improve complex nested components, helper methods were created to manage multiple
promises as a result of several load() calls within an aggregate design. For page
level JavaScript, there is an Atomic.whenAll([functions]) for parallel execution of
a number of asynchronous functions, and Atomic.whenAllSync([functions]) for a synchronous
execution of a number of asynchronous functions. Both methods return a single promise
representing all the calls that were made. Because of the Promises/A+ specification, the
results of all the promises are returned in an ordered array, matching the order passed
to whenAll and whenAllSync.

Ultimately, this is syntactic sugar to component.load().then(othercomponent.load()).then...
however, the sugar definitely makes it easier to understand the loading process being used.
Merge pull request #13 from Jakobo/whenall

feat(Public API, AbstractComponent): adds when, whenAll, and whenAllSync to components

To improve complex nested components, helper methods were created to manage multiple
promises as a result of several load() calls within an aggregate design. For page
level JavaScript, there is an Atomic.whenAll([functions]) for parallel execution of
a number of asynchronous functions, and Atomic.whenAllSync([functions]) for a synchronous
execution of a number of asynchronous functions. Both methods return a single promise
representing all the calls that were made. Because of the Promises/A+ specification, the
results of all the promises are returned in an ordered array, matching the order passed
to whenAll and whenAllSync.

Ultimately, this is syntactic sugar to component.load().then(othercomponent.load()).then...
however, the sugar definitely makes it easier to understand the loading process being used.