Fix memory management issues

Got some crash reports from GCPlaceholderTextView -dealloc.

First change ensures that placeholder will not be corrupted when setting the same string (same pointer): If it has retain count == 1, then first release will dealloc the object, and retain will be sent to deallocated object.

Changes in dealloc are made to avoid having references to deallocated objects. Just in case.