Promise.isPromise, back to fulfill/reject

- Added Promise.isPromise to check if an object is a promise. Y.when
uses it
- Back to Promise(function (fulfill, reject){}). Usability is much
better. "this" inside the callback is the promise, which allows you to
inspect the state of the promise with promise.getStatus(). This is
needed by Y.batch and just makes sense
Adding unit tests for promises and batch

Tests for Y.batch and Y.when try to cover as much as possible. Tests for
pormises in general are basic behavior tests and tests for YUI specific
details.
Current coverage is about 92% without taking into account the
promises-aplus test suite.
Do not chain resolver methods

Chaining resolver methods makes it easy to expose the resolver from the
promise
Fixing a test that was using ArrayAssert.areSame instead of
Assert.areSame
Linting batch.js
Fixing the use of resume() in tests