Rework Message loading
Messages should be treated as a Tag Stream. A general TagStreamReader would call callbacks for every tag parsed, which the Message collects. This allows for reading large messages (SKS Keydumps) and also prepares a structure to use for writing (Build a Message, then write it as a Tag Stream).