Redesign the API

Add a decent API to fedocal able to handle different use cases:
- retrieve the meetings of in specific time-range
- retrieve the meetings of a specific region
- retrieve the meetings of a specific regioin in a specific time-range
- retrieve the list of all the calendars with their information
Move the API documentation inside the API code itself and adjust it to return real json

Moving the API documentation inside the API allows to use it in the sphinx
documentation as well as to generate the online documentation.

So far we were returning a fake json generated by hand, do the things correctly now and
use the json module for that.

Return the arguments provided by the user with the results.

Use HTTP status code to indicate when something went wrong.

Adjust the unit-tests to reflect all this.
pep8 clean up
Update dependencies to include docutils
Allow the callback argument to be passed to the API for ajax calls and act upon it