Improve the bottom-up conversion to top-down and caller/callee data
When we encounter broken backtraces, we may not go all the way up
to main. In such cases, a non-leaf frame may actually have a cost
higher than the sum of its children. In these cases, we also have
to hande the difference in cost just like for a normal leaf node.
The manual test I added does not cover this properly, as the
unwinding is too reliable and thus we do not run into the corner case.
In real-world profiles though, this does occur and adds some errors.
This is now fixed and the caller/callee and top-down view become
more reliable.