Snap events to the end of the previous one if dragged/dropped

Tasks

- [x] clamps events before the next one if the top of the dragged box is above the top of the other one
- [x] clamps events after the previous one if the top of the dragged box is below the top of the other one
- [x] leaves the events as superposed if after the first check there's a new conflict
- [x] doesn't persist the schedule if there's conflict
- [ ] informs the user there's a conflict
- [ ] gives an option to either push forward every conflicting schedule, or fix by hand

<!---
@huboard:{"order":1.125}
-->