feat(Public API, Testing): Switches to Bluebird as promises library of choice

NOTE: This commit is contingent on #14 and #13 to be absorbed first. Replaces
when.js with Bluebird as the promises library used by Atomic. This simplifies
then when/whenAll/whenAllSync commands, offers better debugging (no need for
the Atomic.e object going forward) and can also remove the double-then()
catching that was required to properly handle errors.

BREAKING CHANGE: The deferred object is no longer resolved by calling the
resolved() method, but instead must be satisfied with the Bluebird compatible
API fulfill()

Original code:
var d = Atomic.deferred();
d.resolve(value);

New code:
var d = Atomic.deferred();
d.fulfill(value);
Merge remote-tracking branch 'origin/master' into bluebird

* origin/master:
  feat(Public API, AbstractComponent): adds when, whenAll, and whenAllSync to components
  feat(wiring, AbstractComponent): Simplify wiring and standardize API to be more like Component

Conflicts:
	src/atomic/abstractcomponent.js
	src/atomic/public.js
Merge pull request #15 from Jakobo/bluebird

feat(Public API, Testing): Switches to Bluebird as promises library of choice

NOTE: This commit is contingent on #14 and #13 to be absorbed first. Replaces
when.js with Bluebird as the promises library used by Atomic. This simplifies
then when/whenAll/whenAllSync commands, offers better debugging (no need for
the Atomic.e object going forward) and can also remove the double-then()
catching that was required to properly handle errors.

BREAKING CHANGE: The deferred object is no longer resolved by calling the
resolved() method, but instead must be satisfied with the Bluebird compatible
API fulfill()

Original code:
var d = Atomic.deferred();
d.resolve(value);

New code:
var d = Atomic.deferred();
d.fulfill(value);