Range collapse support and task truncation. Fix #59

Those changes allows to collapse the dateRange when setting fromDate or toDate property.

It also allows user to move and resize the tasks outside of the visible view, by performing proper truncation of the tasks.

It make changes to columnGenerators, tasks and gantt objects in order to have tasks outside of the visible parts of the gantt.

Tasks now have modelLeft and modelWidth properties. These are equivalent to left and width, but for internal computing only. left and width are the visible properties binded to the view, but modelLeft and modelWidth are the real underlying values that may exceed the visible part. 

For example, modelLeft may be negative : This means that the task is truncated on the left. Same for modelWidth : If modelWidth > width, this means that the task is truncated on the right.

gantt now contains previousColumns and nextColumns. Those columns are not intended to be displayed, but are generated on the fly to make the computation of the truncated parts of the tasks.

TODO:
- [x] Fix invalid tasks width and left when dateRange is changed
- [x] Fix invalid tasks width and left when viewScale is changed
- [x] Display a visual feedback when task is truncated
- [x] Fix tasks that starts after the dateRange beeing displayed too far
- [x] Add `task-out-of-range` option : `auto-expand` (default behaviour, expand range based on auto-expand) or `truncate`.
- [x] Add `width` option for the whole gantt. It resize the generated columns accordingly. (goal: lastColumn.left + lastColumn.width - labelsWidth == width)
- [ ] Support CSS units properly