Implements promise and RemoteModel methods.

A good practice is to avoid self = this, and bind() your callback  : 

```
   return new Promise((function({
       ...
   })).bind(this))
```