Implemented a hash on BlitzGateway objects

Added a __key method to BlitzGateway objects
Used the __key method to implement __hash__ method
Refactored __eq__ to use __key

This is so that these objects can be used properly in sets among other things.