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?