[BEMTREE] doAsync()

\cc @veged @arikon @dfilatov

Реализовал метод `doAsync(fn)` для BEMTREE.

**Синтаксис**

```
block b-blah {

  content: {

    return this.doAsync(doRequestP)    // ⟵ `doRequestP` — какое-то асинхронное действие
      .then(
        function(data) {
          return this.apply(this._mode = '', this.ctx = data);
        }.bind(this),
        function(err) {
          return applyNext(this.ctx.content = 'blah-blah-error');
        }.bind(this)
      );

  }

}
```

Проблема в том, что в итоге, в результирующем дереве, оказывается **объект промиса**, а не его разрезолвленное состояние. И я не понимаю почему.

См. пример, блок `desktop.blocks/header/header.bemtree.xjst`:

```
› bem make
› node test.js

...
[
  [
    {
      "block": "b-blah",
      "content": {
        "_res": "some async result",        // ⟵ тут должен был быть разрезолвленный промис
        "_isFulfilled": true,
        "_isRejected": false
      }
    }
  ]
]

```