Add loading code to MessagesModel.

Also, use a list of QSharedPointers instead of QScopedPointers
for the list of messages.
Add a MessagesModel to Project.

The loading of messages is now handled by the model instead of
inside Project.