Config struct + reductions
Created by: brabreda
This pull request introduces:
- a config object that can be used to use specific features depending on a backend.
- reduction API
Another idea would be to include ndrange in this config object. With this, we would be able to base the kernellaunch on this object so no need to define groupsize and ndrange again.