Refactoring messages

Item will store persistent messages for local delivery.
Message will be an object passed around between interfaces.
QueuedMessage will be a persistent store for remote delivery.