Implement xCal support

Useful links:
  * [RFC6321](https://tools.ietf.org/html/rfc6321), xCal: The XML Format for iCalendar.

To-do:
  * [x] require sabre/xml,
    * [x] update `composer.json`,
    * [x] sabre/xml requires PHP5.4, hence update sabre/vobject (done by Composer?),
      * [x] if requires PHP5.4, we can use the [`JsonSerializable`](http://php.net/jsonserializable) everywhere (all top-classes having a `jsonSerialize` method),
      * [x] update code accordingly (e.g. short array syntax),
      * [ ] update documentation accordingly,
  * [x] create the helper in `Sabre\VObject\Reader`,
  * [x] add XML serializer helpers everywhere (e.g. in children of `Sabre\VObject\Node`),
  * [ ] timezones used by xCal and xCard are differents, must check the compatibility,
  * [x] create the reader (parser):
    * [x] support properties:
        * [x] support all names,
        * [x] support all values (types of values):
          * [x] `binary`,
          * [x] `boolean`,
          * [x] `cal-address`,
          * [x] `date`,
          * [x] `date-time`,
          * [x] `duration`,
          * [x] `float`,
          * [x] `integer`,
          * [x] `period`,
            * [x] `start`,
            * [x] `duration`,
            * [x] `end`,
          * [x] `recur`,
            * [x] `until`,
            * [x] `count`,
            * [x] `interval`,
            * [x] `bysecond`,
            * [x] `byminute`,
            * [x] `byhour`,
            * [x] `byday`,
            * [x] `bymonthday`,
            * [x] `byday`,
            * [x] `byyearday`,
            * [x] `byweekno`,
            * [x] `bymonth`,
            * [x] `bysetpos`,
            * [x] `wkst`,
            * [x] `freq`,
          * [x] `text`,
          * [x] `time`,
          * [x] `uri`,
          * [x] `utc-offset`,
        * [x] support special cases:
          * [x] `categories`,
          * [x] `resources`,
          * [x] `freebusy`,
          * [x] `exdate`,
          * [x] `rdate`,
          * [x] `geo`,
            * [x] `latitude`,
            * [x] `longitude`,
          * [x] `request-status`,
            * [x] `code`,
            * [x] `description`,
        * [x] support all parameters:
          * [x] support the specific `value` iCalendar parameter,
    * [x] support all components:
      * [x] `vevent`,
      * [x] `vtodo`,
      * [x] `vjournal`,
      * [x] `vfreebusy`,
      * [x] `vtimezone`,
      * [x] `standard`,
      * [x] `daylight`,
      * [x] `valarm`,
    * [x] support XML extensions.

Code review:
  * usage of iterators has been heighten (see https://github.com/fruux/sabre-vobject/pull/161),
  * clean code (https://github.com/fruux/sabre-vobject/pull/162),
  * better performance when possible (see https://github.com/fruux/sabre-vobject/pull/162).


Left apart for now:
  * [x] [RFC6321, section 3.1. Pre-Processing](https://tools.ietf.org/html/rfc6321#section-3.1),
  * [ ] `LIBXML_*` options when reading or writing.

To fix:
  * [ ] `rdate`.
Open to suggestions. I like the fact that there's a design pattern possible where a single class can be responsible for both serializing and deserializing. I'd like to keep this and keep this easy, as it allows for a super simple round-tripping, e.g.: the result of read and be written and vice-versa.

Its possible to create a second interface that does the deserializing... but idk. We would just create a base class that throws an exception upon deserialize? So everything can easily extend that?

Thoughts?