TODO
=====

- After kronolith gets support for different organizer/owner fields, must
  properly set the organizer for meeting responses. Currently, the event
  created from a meeting response does not contain the organizer of the original
  event. So when the event is sync'd back to the device, it allows the user
  to cancel the event and send updates to all attendees. Also, it will then be
  possible to automatically add responses to the kronolith event from the
  incoming activesync response message.

- Email recurrence related properties for recurring meeting requests.

- Email categories - possible to map to custom IMAP Flags?

- Support EMPTY_FOLDER commands in ITEMOPERATIONS requests. Need a client that
  sends this request to implement properly.

- SCHEMA support in ITEMOPERATIONS requests. Don't have client that supports
  currently.

BC BREAKING (i.e., Horde 6).
============================

- Move all non-specific constants to single class.

- Clean up the various foldertype constant messes. I.e., probably store
  the Horde_ActiveSync::FOLDER_TYPE_* and Horde_ActiveSync::CLASS_* values
  in the saved state instead of having to switch between them in various
  places. (Some client commands are sent using the CLASS, some using the
  FOLDER_TYPE).

- Clean up and refactor the folder creation/editing/deleting methods in the
  backend. They need to be normalized in accepting/returning the same objects
  now that we support multiple folders per non-email collection.

- Refactor Horde_ActiveSync_State_*::listDevices() to return a
  Horde_ActiveSync_Device object instead of a hash keyed by backend field names
  and to take the object property names as filters instead of backend field names.

- Clean up logger creation/setting/log_level setting.

- Consolidate folderUid <-> backend id mapping methods into a single place.
  Currently they live in both the collection handler and the backend driver.