expire messages after given time

also, barebone mechanism to clean up items in the message_ids sorted set
mapping to expired keys. This mechanism can and should be improved
though, as it's only doing the cleanup when all messages in a channel
are queried for. A better idea is to expire the whole set, and move the
expiration date forward every time a message is added.