Carousel v2 keyhandlers should only respond to own align events

Carousel v2's keyhandlers use align events to set the active index of
the carousel, either before or after alignment has occurred. Event
propagation is not stopped, to allow client code to listen to them too.

But the keyhandlers do not check that the event has come from the
carousel to which they are attached. This means that if one carousel
is contained within another, the keyhandler of the parent is triggered
by alignment events from the child.

This commit fixes the bug by checking the source of each alignment event.
It also adds one test for each keyhandler which expose the original bug.