Old code used to use a TreeMap solely to sort VEvents,
while inefficiently converting everything to String/XML
New code uses a TreeSet with a Comparator to maintain
the sort order.
Had to add equals and hashCode methods to
iCalendarVEvent ( PLEASE check these out, I'm not sure
what invariants you are expecting ).
Then added Comparator classes to do sorting by
StartDate alone, or StartDate and UID ( fallsback to
UID if StartDates are equal ). The reason I added the
second, was because it would mimic the old iCalKey sort
behavior ( date,UID ).