making these object hashable is necessary for plotting to work in py3k, independent of the rest of this change. for some reason, the objects are going into the cache in that version, but not in regular python.