Only count the user's last vote

Where a user votes multiple times on an item, each of their votes is currently included in the total vote count. This allows users to artificially inflate (or decrease) the importance of an item by voting multiple time on it, and means a user casting a new vote to change their opinion from -1 to +1 just blanks out their previous vote, rather than reversing their input as expected.

This change limits the count to only include the last vote a user places, and 'greys out' the superceded  vote markers to make it clear which votes are excluded from the count.

Original:
![gitlab-vote-original](https://cloud.githubusercontent.com/assets/1250331/4926569/8a1add58-6534-11e4-8c02-1c7547749c1a.png)

Updated:
![gitlab-vote-changes](https://cloud.githubusercontent.com/assets/1250331/4926571/8ea21b98-6534-11e4-9c73-cc3709a31440.png)


This comment is outdated - complexity was reduced by moving two `upvote? || downvote?` checks into a separate `vote?` method