Bug 1027725 - Make calendar app async operations use promises

any specific reason to use the IIFE instead of simply:

```js
Calendar.denodeifyAll = function(object, methods) {
  // ...
};
```

nowadays the stack traces are able to get the name from the object itself (functions don't need to be named).

see:

```js
setTimeout(function() {
  var foo = {};
  foo.bar = function() {
    return a + b; // error since a and b are undefined
  };

  var dolor = {
    amet: function() {
      return foo.bar();
    }
  };

  try {
    console.log(dolor.amet());
  } catch (e) {
    console.log(e);
  }
}, 300);
```