perf(columns): Do not search for currentDate column on generateColumns

Store the current date column instead of searching for it on generateColumns. This is a slow process if e.g. view mode is 'hour' and the columns of one year are loaded.
perf(columns): Remove unnecessary calls to moment.js

Remove all unnecessary copy calls to moment.js when the columns/headers are generated. Additionally calls to moment.js 'startOf' in hour view can be done once instead of in each iteration.
perf(scroll): Remove hidden flag filter

The hidden flag filter uses the default Angular filter which is not very fast as an object comparison is done to determine if the hidden flag is true/false. Additionally the hidden flag requires to go trough the array of columns/headers/rows/tasks three times (1st to set hidden=true, 2nd to set hidden = false if match, 3rd to apply the filter inside the template). By having a own property visibleColumns/Header/Rows/Tasks no filter is necessary and the scrolling performance is double as fast.
fix(sort): Call updateRows after a row has been re-ordered by the user

Update the visibleRows property after the user did re-order a row. Additionally added a check to only swap the rows if they really have been re-ordered.
feat(event): Add row-order-changed event

The row-order-changed event is triggered when a row has been re-ordered by the user. This event is fired in addition to the row-changed event in order to be able to handle sorting specific stuff.