java/HashValue: add+subtract, remove combineWithValue

Reviewer: @vaterlaus @rlane

The HashValue types gain arithmetic add and subtract operations. Also
removes the obsolete combineWithValue operation that had weird/broken
semantics.
I'm thinking both are right. I don't have a formal prove, IMHO your thing says
- "An overflow has occured if the resulting value of the subtraction is larger then the initial value of the left operand" (seems right)

My thing says:
 - "An overflow will occur if the right operand is larger than the left operand (seems right too?)

Thoughts?