racket/snip and racket/gui: remove leftover `~` methods

The `~` methods on snip and editor-related classes are not documented
or called from anywhere. They corresponded to destructor methods back
when the classes were ported from C++.
racket/gui: change pasteboard to put location info in snips

Use the field in a `snip%` that is otherwise used by a `text%` owner
to store line information. Reusing the field avoids the need for
an `eq?`-based hash table of snips.
racket/gui: change some `eq?` to `object=?`

Some places in the editor API accept an object as an argument
where the object's identity is relevant. In that case, `object=?`
must be used instead of `eq?` to work right with contracts.
fix checking of attempt to impersonte non-struct via mutator