Improved equals() and hashCode()

equals was inaccurate, leading to errors in specific scenarios. To be specific:

A job calling to different flows which in turn call the same subjob ("prepare-environment") in our case using the same index would result in missing entries in the buildgraph.

equals is now based on name and buildnumber, hashCode is based on name.

can you please contribute a test case as well?