[refactoring] Junit's assertEquals() --> Assertj's assertThat()
Rewrote tests for hashCode and equals in Value to explicitly check parts of the specification.

This is because I did something stupid (once noticed... hindsight is 20/20
here) and previous tests didn't catch the fact that equals was not
symmetric when comparing class and its child (value.equals(child) was true
but child.equals(value) was false).
[refactoring] Make it pretty while keeping Findbugs happy.
More annotations - can't make it more explicit.
[refactoring] Tests and additional compareTo contract checks.
[BREAKING] Renamed jaxb adapters and modified javadoc
[refactoring] Make it more readable.
[refactoring] Change conditions to make the function more readable.
Test transient fields in BaseObject.

That class still needs full equals() and hashCode() contract check.