Make IMP.atom.Selection more robust

Selection now maintains a list of predicates and then selects the lowest level thing whose children match all the predicates and that has a small enough radius.

close #320.