delegate to check if the message matches expectations (author, channel, etc)
timeout to wait for first message
total time to spend starting waiting for messages
timeout for a message after the first message. totalTimeout + inbetweenTimeout is the maximum amount of time this function runs.
Waits for multiple messages sent at once and returns them.