bottle: re-raise interrupt after cleanup
Implement hash equality for Version