(WIP) Have the option to do async through callbacks instead of futures

* Async callback (errors are not yet managed properly)

@denpen @tokutake @MiLk @ronkorving
If you don't want to catch the error, you should propably follow the node.js callback style.

```c++
const std::function<void(MageError, Json::Value)>& callback
```

```c++
try {
  callback(NULL, Call(name, params));
} catch (MageError e) {
  callback(e, NULL);
}
```