refactor(gantt): Replace $scope.template with Gantt object

This refactors each object contained in $scope.template into clear and readable Gantt object variables, making this more readable and maintainable.
refactor(gantt): Split Gantt object into multiple specific managers

This adds RowsManager, ColumnsManager, HeadersManager, TimespansManager and CurrentDateManager into Gantt object.
refactor(gantt): Add more logic subfolders
refactor(gantt): Use prototype based classes.

Using prototype to define class methods is more performant for every classes beeing instanciated maye times, like Row, Task and Column.
refactor(gantt): Better separation of concern

This refactor moves some code from gantt factory and directives to appropriate classes for better separation of concern.

It also fixes some issues introduced by previous refactoring.
feat(api): Add API object

This introduce api object and removes any function bindings, replaced by functions from this api object.

It also removes all $scope.$on events support, replaced by their api equivalents.

Close #188
feat(options): Configure gantt using a plain old javascript object

Attributes can now defined in as a plain old javascript object, using the options attribute.
docs(readme): Update readme with API and new events
feat(api): Add dom new and destroy events

This also make some changes on data passed to parameters, and enhance documentation of events.

Close #214