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
Fix the unit-test, dates should not be hard-coded
Split the function to extract the API documentation from the docstrings into its own module
Fix unit-test, the period used by the API is relying on the current date
Fix unit-tests

Since we now include the end date in the results we need to take a day earlier to have
the same results
Merge pull request #14 from fedora-infra/api_fix

Api fix