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

* Async callback (errors are not yet managed properly)

@denpen @tokutake @MiLk @ronkorving
Indeed. The following should be better.
```c++
Json::Value value;
try {
  value = Call(name, params);
} catch (MageError e) {
  return callback(e, NULL);
}
return callback(NULL, value);
```