feat(wiring, AbstractComponent): Simplify wiring and standardize API to be more like Component

The wiring API was not in line with the Component API. This change standardizes the wireIn
function to "wire", and creates an Atomic.Wire function which behaves similar syntactically
to Atomic.Component.

BREAKING CHANGE: In order to support the new API, all wirings need to be udpated from originally
just calling a define() method to including the Atomic/Wiring component and returning the call
to Wiring().

Previously:
(function(define) {
  define('wirings/foo', [], function() {
    return function(config) { /*...*/ };
  });
}(/*amd signature*/));

New syntax:
(function(define) {
  define('wirings/bottoming', ['Atomic/Wiring'], function(Wiring) {
    return Wiring(function(config) { /*...*/ });
  });
}(/*amd signature*/));
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.
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 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.
Merge pull request #14 from Jakobo/wiring

feat(wiring, AbstractComponent): Simplify wiring and standardize API to be more like Component

The wiring API was not in line with the Component API. This change standardizes the wireIn
function to "wire", and creates an Atomic.Wire function which behaves similar syntactically
to Atomic.Component.

BREAKING CHANGE: In order to support the new API, all wirings need to be udpated from originally
just calling a define() method to including the Atomic/Wiring component and returning the call
to Wiring().

Previously:
(function(define) {
define('wirings/foo', [], function() {
return function(config) { /.../ };
});
}(/amd signature/));

New syntax:
(function(define) {
define('wirings/bottoming', ['Atomic/Wiring'], function(Wiring) {
return Wiring(function(config) { /.../ });
});
}(/amd signature/));
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);
fix(Public API): enables use of AMD loader where it was previously failing

The addition of a local define() variable was trampling over libraries like
Inject and RequireJS since the local define() method could no longer be found.
Update loader compat files to remove uneeded Atomic.init and AMD definition
feat(grunt): Ports Inject's grunt tooling to Atomic

To create consistency between projects, this brings over some planned
tooling for the Inject framework. Specifically, it adds the following
features to grunt:

bumpversion: able to auto-increment versions in package/bower json files
changelog: generate CHANGELOG.md based on commits

Additionally, this consistently generates a dist/recent and will optionally
create dist/atomic-* when triggered using grunt:release
Merge pull request #16 from chadhietala/master

fix(compat): Fixes loaders to no longer auto-define Atomic or attempt to auto-load Atomic

The loaders shipping with atomic attempt to auto-define, something that is now
solved in the main Atomic file. This removes those `define` statements from the
loader files.
Merge remote-tracking branch 'origin/master'

* origin/master:
  Update loader compat files to remove uneeded Atomic.init and AMD definition
Compat loaders need to use Bluebirds fulfill() instead of resolve()
Update readme to reflect correct promise lib