Correctly declare the return type of promise.filter and promise.map

As per #2788 - it appears that the definition of `promise.map<T>` and `promise.filter<T>` is a promise which would be resolved with a single object (`promise<T>`) rather than an array of them (`promise<T[]>`).

Example of 'real life' usage:

```js
p1 = Promise.resolve([1, 2, 3]);                    // Promise<number[]>
p2 = p1.filter(function (n) { return n % 2 > 0; }); // Promise<number[]>
p3 = p2.map(function (n) { return n * 2; });        // Promise<number[]>

p3.then(console.log.bind(console));                 // [2, 6]
```