A Unifying View of Abstract Domain Design