Reorganize search a bit
Reorganize search a bit

Make backward and forward hints be members of expression nodes. This feels a bit hacky,
since there is a temporal dependence on calling the evaluate function, but it's probably
better than what I was doing before: preallocating search hints in the parent node and
returning as an output argument. This required changing the inheritance hierarchy a bit,
which I think actually ends up making more sense.
- Also separated LogicalExpressionNode.nextHint into nextForwardHint/nextBackwardHint,
which is clearer than using a boolean flag node to indicate the direction as it did before.
- Stopped preallocating the BitVector value when reading value nodes. I was trying to optimize,
but I don't have any data that shows this is a problem. In reality, because of the binary search
and practical small number of signals, it probably won't end up allocating that many nodes.

jbush001/WaveView