Add unlike functionality and improve associated code

This should fix #722. I've not actually tested it in a browser yet (having a little struggle getting the app setup and I'm out of time) but the tests pass. If anyone has time to verify it works in a browser, that would be great. Otherwise I'll come back to it when I have chance. I've refactored the like/unlike/mute/unmute code slightly as well to make it more consistent (co-operating and all that ;))