Adding recurring events now works

- New addEvent method to handle recurrence logic when adding
- Ported calculateEndDate and calculateDuration methods
- Changed db code back to returning associative arrays instead of objects, so that the code to process events could be the same incoming and outgoing (since requests coming in are arrays). Less confusing that way.
Merge branch 'master' of github.com:bmoeskau/Extensible