Fix contract for find-definition.

Just pair? not list? -- e.g. `(foo . xs)` is valid.
type-or-sig should return "" not a message.

Refactor a few functions accordingly.