Preference Trees: A Language for Representing and Reasoning about Qualitative Preferences