Implemented 'selectors' as a way to specify search strategies.

Now RandomAccessSearch uses an AbstractSelector to choose the next node to explore at each iteration.
Various selector implementations (which can be combinators) can be used to implement different search strategies.