Make it possible to specify `direction` option as an observable, listen to changes too.
Put helper methods SelectionModel.hasHorizontal and SelectionModel.hasVertical, rather than hard-coding expected values in modes