Client refactoring

Hi Garreth

Consider this a work in progress, for your review. Don't merge yet, as I'm far from done.
I'll continue to commit things to this branch so this PR stays up to date.
Yes. I've been creating a new interface in :

`lib/api/caldav.js` which 1:1 mimics what you did in `lib/calendar.js`.

I'm happy to _not_ use that name, but I had to set aside the 'new' interface while not deleting the old one just yet.

The new one is different in that it requires a 'client' object. This is how I've solved this:

    var calendars = new davinci.api.caldav(client);
    calendars.createCalendarObject(...)

So the object now needs to be instantiated before it can be used. It would also have been possible to make the `client` the first argument of every function:

    calendars.createCalendarObject(client, ...)

If you prefer that, I can change that back.