I'm reading bits and pieces that suicide within contracts are a good thing. Can someone explain what the benefits are of doing a contract suicide when it comes to Ethereum programming? Is there a difference if you're using different clients or implementations, or languages?