as attribute: ensure callbacks are not executed when resetting scrollTop

- added a test to ensure this
- also re-worded the tests to clarify this
as attribute: sets overflow-y to auto on the element

also a couple of failing tests in this commit (whose functionality
  hasn't been coded yet)
as attribute: validate snapIndex before snapping

whoops! now tests on beforeSnap and afterSnap callbacks are failing
as attribute: fixed tests failing as a result of validating snapIndex

- of course, for beforeSnap and afterSnap callbacks to be called it must
  be possible to snap
- and there are still 2 other failing tests (functionality not implemented)
as attribute: updates height of children to match snapHeight
as attribute: grouped initialisation code
as attribute: some code refactoring