Code indentation
Add cfw:event struct for common formatting.

The cfw:event struct:
 - title:        event title [string]
 - start-date:   start date of the event [cfw:date]
 - start-time:   start time of the event (optional)
 - end-date:     end date of the event [cfw:date] (optional)
 - end-time:     end of the event (optional)
 - description:  event description [string] (optional)
 - location:     location [strting] (optional)
 - source:       [internal] source of the event

When used by the calfw plugins (cal,ical, etc) they can be displayed in a common way. cfw:event has several formatting functions used by the calendar.
 - cfw:event-overview:        To get an overview of the event (month, 2-week & week view)
 - cfw:event-days-overview:   Overview in day-view.
 - cfw:event-period-overview: Overview of periods (same for all views)
 - cfw:event-detail           Detailed information of the event for the detail-view

The formatting can be customized by the user with several formatting strings:
 - cfw:event-format-overview
 - cfw:event-format-days-overview
 - cfw:event-format-period-overview
 - cfw:event-format-detail
 - cfw:event-format-title
 - cfw:event-format-start-date
 - cfw:event-format-start-time
 - cfw:event-format-end-date
 - cfw:event-format-end-time
 - cfw:event-format-location
 - cfw:event-format-description

* Adapted ical and cal plug-ins to use cfw:events
* Add some convenience functions for date/time

* Bug fix regarding period stacking:
 Holes between different periods were not considered by the stacking algorithm:

    a a a a
    b b c d d
      c

 But expected was

    a a a a
    b b   d d
      c c
Merge branch 'cfw-event' of https://github.com/ahilsend/emacs-calfw