Re-implementing moveNext and movePrevious with ko

It now updates the items in the container when it has finished sliding
(drops one of one end, adds a new to the other)

This also required dealing with child items in the container firing
transition completed events. The solution works on the assumption that
the child items have their own bindings and viewmodel so I can check
the ko.dataFor of the event target. (This felt nicer than the view
model needing to know which element it was getting bound to.)

Also, updated slidingStatus to be a computed property based on the
direction that the container is moving.

TODO:
- fading in/out of the items that are getting added/removed
- setting the current item
Re-implementing moveNext and movePrevious with ko
Updating the current item when the move starts so you get
the effect of the new current item coming towards you as it
moves to the center

There was some undesirable behaviour if you did a moveNext followed
by a movePrevious before it had completed (or, vice versa)...the net
result was as if there was a single movePrevious instead of just
putting everything back the way it was.

This was solved by detecting if the container is moving in the
opposite direction first and using the slide-reset status
to slide the container back to where it was as well as resetting
the current index.

I could have just ignored any move in the opposite direction while
it's still moving (that's effectively what multiple moves in the
same direction does) but it feels nicer being able to quickly change
directions like this. (I'll see how it feels once I've put some
acceleration in to multiple moves.)

I've also switched round slidingStatus and direction so that direction
is computed from slidingStatus (slidingStatus now has four states,
where direction has three - so it's easier to go in that direction).