findbugs: Suspicious comparison of Long references

This method compares two reference values using the == or != operator, where the
correct way to compare instances of this type is generally with the equals()
method. It is possible to create distinct instances that are equal but do not
compare as == since they are different objects. Examples of classes which should
generally not be compared by reference are java.lang.Integer, java.lang.Float,
etc.
findbugs: Ambiguous invocation of either an outer or inherited method HashMap.size()

An inner class is invoking a method that could be resolved to either a inherited
method or a method defined in an outer class. By the Java semantics, it will be
resolved to invoke the inherited method, but this may not be want you intend. If
you really intend to invoke the inherited method, invoke it by invoking the
method on super (e.g., invoke super.foo(17)), and thus it will be clear to other
readers of your code and to FindBugs that you want to invoke the inherited
method, not the method in the outer class.

NOTE: based on my interpretation of the code we wanted to use the
LinkedHashMap's size() method and not the one from ProductCache.
findbugs: CriteriaRules.log isn't final but should be

This static field public but not final, and could be changed by malicious code
or by accident from another package. The field could be made final to avoid this
vulnerability.

NOTE: I made it private instead of protected like the other uses of Logger.
This avoids the need for it being final and needing to be all caps: LOG
because of checkstyle.
Merge pull request #193 from candlepin/fixfindbugs

Fix high priority findbugs warnings.