Add a fingerprint based on callstack and shorten source file paths

Currently if an error message has a variable part, multiple occurrences of it will show up as many unique errors in rollbar ui.

This change improves on that by calculating and sending a fingerprint (as described in https://rollbar.com/docs/guides_grouping/) based on a callstack, which is unique within a particular build of the app.

It also shortens source file paths sent to rollbar to make them shorter and remove the part of the source file path that depends on the machine on which the code was compiled. It also helps in building the above fingerprint.
Any particular reason for using adler32? Rollbar uses sha1 internally fwiw.