rewrite filter+ancestry to be purely functional and stop using transients incorrectly
rewrite filter+ancestry to be purely functional and stop using transients incorrectly

cgore/specter,nathanmarz/specter,nathanmarz/specter,cgore/specter