Add Util.hashCode(double).
Allow VolcanoPlanner to be sub-classed with different cost factory. Make VolcanoCost immutable.