- Abstract data type in channel message lists to represent date
transition lines and New Messages lines

- Generate date transition lines in incoming message lists
  - Also remove date transition insertion at draw time
  - Add draw support for date transition lines

- Regenerate date transition lines on time zone change

- Startup New Message line insertion logic:
  * insert New Messages item into channel message list using timestamp
    of last channel view from the server

- On receipt of new message (via any means such as scrollback etc):
  * if last message in sequence is the "new messages" transition line
  AND the message being processed is for the currently-viewed channel
  AND the currently-viewed channel is not in the InitialLoad state, then
  update the timestamp of the New Messages entry to be just after the
  creation time of the message received

- On channel change:
  * for the channel the user is leaving, move the New Messages line to
    the end of the message list.

- When updating server viewed time:
  * Do not subsequently request the channel metadata.

- hasUnread (only applies to non-currently-viewed channel):
  * make this a ChannelInfo field
  * its value is set to True whenever

    * New Messages is not at the end of the message list for the channel
    OR
    * A message is edited (future: highlight edits on channel view,
      un-highlight on leave)
    OR
    * A message is deleted (future: higlight/strikethrough deleted
      messages, expunge on leave)

Add new messages management development plan document
Add new messages management development plan document
