Add code to start using Guzzle client

This is the first step towards stop using a custom cURL wrapper with
CalDAV handling code inside.
Apply some refactoring to the HTTP client class

Use construct injection for the Guzzle client object
Add unit tests for the HTTP client
Actually test 4xx/5xx requests
Clean headers after each request

A header added with setHeader/addHeader was being used on every
request sent by the same client.
Add an XML generator helper
Move Guzzle and XML generation code to src/

This branch was using PSR-0 style
Enable exceptions on 4xx/5xx HTTP codes

That makes handling errors a little bit easier.
Rename XMLGenerator to XML\Generator

We will need an XML Parser later, so let's keep them in their own namespace
Fix HTTP client: body has to be a Guzzle Stream

Passing a string as the request body doesn't work, it has to be
a Guzzle Stream.
Add an XML parser based on SabreDAV client

SabreDAV client is really great, but I want to split XML parser and
generator on two different classes, so some code is borrowed (thanks Evert!)
Add new experimental CalDAV client

Work in progress, so [skip ci]
Merge branch 'feature/guzzle' into develop