API introduction and mass refactoring

This is the first step for 0.8.0

- [x] Use prototype for better performance
- [x] Cleanup Gantt factory using more classes (separation of concern)
- [x] Cleanup gantt directive and scope binding
- [ ] Replace all scope bindings by a single gantt-options attribute (#134) 
- [ ] Introduce an api object in Gantt factory, to control events and methods from outside (inspired by ngGrid 3.0, see [GripApi.js](https://github.com/angular-ui/ng-grid/blob/master/src/js/core/factories/GridApi.js) and how it's used for example in [Grid.js](https://github.com/angular-ui/ng-grid/blob/master/src/js/core/factories/Grid.js))