Remove hashCode() and equals() from TraceImpl

Due to the way how trace is built in parseq, hashCode() and equals() can be very expensive as they will result in recursively calling themselves on all related traces over and over. And it turns out we don't really need them except for testing. So I removed these two methods in TraceImpl and pulled them into an new class(ComparableTrace) that is used by test code only.