Extract topic posters summary

Trying to improve the [code climate](https://codeclimate.com/github/discourse/discourse) score, starting with the most complex class: `Topic`

This PR extracts the large `Topic#posters_summary` method into its own class. We also add tests since this method is currently untested.

This decreases the overall complexy of `Topic` from [854](https://codeclimate.com/github/discourse/discourse/Topic) to 755. More works is needed to to get `Topic` from an F to a D, but those will come as seprate PRs.