Refactor: extract Fingerprint#generate from ErrorReport

This commit is just a refactor to get the fingerprinting concern by itself; but it paves the way for testing the fingerprinting algorithm, evaluating substitute algorithms, and even supporting different algorithms in different scenarios.