Improved comment.
Equals/hashcode/toString and tests for Logic.not
Equal/hashcode/toString and tests for Logic.and
Added 9 failing test cases if args are same but constructor differs

Hashcode should not only look at the fields, but also at itself.
Fixed hashcode so that it looks at constructor and arguments.

Hashcode does this by taking 
this.getClass().getName() into account as well.