Typo in comment.
Wrote test cases for equality, and fixed equality in RegexCond

Wrote test cases to ensure consistency between hashCode, toString, 
and equals. Had to fix RegexCond accordingly.

Removed the super.equals, super.hashcode, and super.toString calls,
since these revert back to Object, which in turn gives pointer
equivalence. (Such super calls are only useful if the superclass 
defines structurally equivalence as well).

Since the Pattern class has no structural equivalence, I replaced
the Pattern equality check used in equals by an equality check on
the String representation.

Todo: 

* fix other condition Condition classes having same problem;
* turn test cases into parameterized test covering all Conditions.
Turned ConditionTest into parameterized test.
Added test case for NotRegexCond, and fixed its hashcode/equals impl.
Test case for UrlCondition, and fixed its hashcode/equals method
Test case for NotUrlCondition, and fix for its equality/hashcode.
Testcase for (Not)XPathCondition + fix of equals/hashcode.

Also added explanatory string in Parameterized test case.
Test cases for VisibleCondition + fix for equality/hashcode
Tests for NotVisibleCondition + fix for equals/hashcode.
Test for JavaScriptCondition + fix for equality / hashcode.
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.
Fixed hashcode.
NAND equality/hashcode/tostring: Tests + fix
Tests + fix for Logic.or equality/hashcode/toString.
this.getClass().getName() -> getClass() in hashCode.
Wrote test for and fixed equals/hashCode for CountCondition.