Refactor to never load messages using min or max id of messages in memory

TreeMaps will be used to store MessagePlusses in memory, instead of LinkedHashMaps
so that the dates in millis can be used to sort the messages. This looks a little funky
right now, but it simplifies some logic.