Add a generic problem summarizer.

This will summarize problems for everything that's not a dependency or a
disk space. It does this by giving up and making rpm do it.

Also add an abstract format_details to ProblemSummary to make it more
clear that the class can't be used on its own.
Separate the problems list by type before creating summary objects

Doing the test in the constructor seemed kind of backwards and weird.
Always move forward. This way we only need to scan the list once!
Merge pull request #40 from dashea/problemsummaries

A couple of ProblemSummary patches. Should fix bug 1043981.