Refactored SearchDescriptor to allow adding Sort objects.

I changed the ISearchRequest Sort property to be an IList of
ISort, and not KeyValuePairs. I also modified ISort so that it
requires an ISort to know what its key is in a Sort object. These
two changes allow adding Sort objects directly to a
SearchDescriptor without specifying the key, and means that an
ISort object always carries the data required to serialize it along
with it.