Day column can now show/hide non-work hours

Added functionality to that allows the day column view to take account of the “show-non-work-hours”, and “work-hours’ settings.  For this to work correctly with drag and drop the “column-sub-scale” setting must exactly divide the number of hours in the working day.  For example, an 9 hour working day could have a sub-scale of 9, 3 or 1, but a sub-scale of 8 will give strange behaviour when dragging and dropping.

Demo files have also been updated to demonstrate this feature.
Correction for task snapping issue

When a period of time is hidden (for example when weekends are not showing, or when non-working hours are hidden) then one point on the gantt can represent two different times.  For example, with weekends hidden, the line between Friday and Monday represents midnight on Friday night and midnight on Sunday night (into Monday morning).

When resizing or moving a task it is possible to select between these times with very small mouse movements, however there is no visible difference to the task block.  This could lead to tasks being snapped to the incorrect time unless great care is taken.

The date that the user wants to snap to typically depends on what they are snapping.  For example, if the user is resizing the end of a task and they move it to the line between Friday and Monday, they most likely want the task to end at the end of Friday.  However, if the user positions the start of a task on the same line, they probably want it to start on the start of Monday.

This commit implements this snapping behaviour.
Tweak to the addRow method of Gantt, to catch the case where rows contain an empty tasks array.  This avoids an exception when expandColumns() is called.
Added functionality to show time bounds for a task.  Hovering over a task that has an “est” (earliest start time) and “lct” (latest completion time) set will indicate this time window on the gantt.

For example see “Concept approval” and “Create concept” tasks on the demo gantt.
Fix edge case in DayColumn getPositionByDate

getPositionByDate() in DayColumn had the implicit assumption that the date argument would be on the same day as the column date.  This is not always the case - if the date argument is on a day that is hidden (like the weekend) then the column is the nearest visible day prior to the date argument.  In this case, the the time of the date argument (which is used by the rest of the method) is not relevant.  Added a check to catch this case and return the position at the far right of the column.
Merge branch 'formerge' of https://github.com/andrewbone/angular-gantt into feature/pull-request-29
Made task bounds work in all scale modes and don't add a task bound to the DOM if not activated for the task
Adjusted sample data file
Source code cleanup
Added snapping behaviour to hour scale
Cleaned up demo code
Merge branch 'feature/pull-request-29' into develop
Issue #36 - Switched row sort mode "name" to case insensitive
Bugfix issue #30: Moving tasks breaks when firstDayOfWeek != 1