Replace Storage#next_message with Storage#get_messages

Storage#next_message relied heavily on something being done with each message (archive, delete, etc.). However, if a user wished to just skip over a message, or in instances where nothing was done to the message, each call to #next_message would return the same exact message. Not only does #next_message not do what the method name suggests (it gets the first message in a list, rather than actually grabbing the next message), but also breaks some functionality like message skipping.

An alternative solution to this is to get a list of all messages of a particular type, store them in memory, and then iterate through them in controllers. This allows for a much easier implementation of alternative storage backends, as well as allowing the skipping of messages to actually work.