reducers: actually update messages
reducers: actually update messages

when a list of messages is passed with UPDATE_MESSAGES
the reducer calls updateMessage() for each message

updateMessage() takes the state and a message, and tries to find
the message in the state. If it cannot find it, it adds it to the end
of the state's message list. If it finds it, it updates its keys
using Object.assign.

this fixes #26

arpith/tulip,arpith/tulip