fixing spell constructors to call each other, adding equals and hashcode methods

All classes should have an overridden hashCode and equals method, unless
you have a good reason, or lists and other collections maybe not be able
to retrieve them correctly and other bad stuff will happen.