SOA Conventions

This PR is still in a WIP status, but I'd like to get everyone's feedback on it.

The intent is to define a set of good rules that we can follow when spawning and shaping new services.
Interesting topics:
1) How to architect APIs in order to make them more reusable across services
2) How to communicate within APIs (for now http but it might change it the future).
3) How to handle errors
4) Api wrappers conventions