Clarifying the promise API (non-backward compatible).

This commit introduces a clear (non-backward compatible) distinction
between a defer and a promise.

Here was the previous way of using the promise library (before this commit):

  var promise = require("noder-js/promise");
  var myTimeout = function (delay) {
    var defer = promise(); // this promise function actually returns a defer
    // which can also be used as a promise
    var res = defer.promise(); // and this one returns a true promise
    setTimeout(function () {
      defer.resolve();
    }, delay);
    return res;
  };

In the previous example, defer and res are very similar objects.
The only difference is that res does not have the resolve and reject methods.
Both defer and res are usable as promise objects, but defer should not be used
as a promise, as it would expose the resolve and reject methods which are
not supposed to be exposed. But it is easy to forget to call defer.promise()
and to return defer instead, by mistake.

This commit removes most of the methods of the defer object, so that
it can no longer be used as a promise. It now only has the resolve
and reject methods along with a promise property containing the object
to be used as a promise, so that it is mandatory to use the real promise
object. Moreover, the method to create a defer is now called promise.defer.

Here is the new way of using the promise library (starting with this commit):

  var promise = require("noder-js/promise");
  var myTimeout = function (delay) {
    var defer = promise.defer(); // promise is no longer a function
    var res = defer.promise; // promise is no longer a method on the defer object
    setTimeout(function () {
      defer.resolve();
    }, delay);
    return res;
  };

This commit also removes some non-standard methods on promise objects, such as:
done, fail, doneSync, failSync and state.

The remaining methods are the following ones:
then, thenSync, always, end and result

This commit also adds the following methods (to replace the state method):
isResolved and isRejected
1.3.0