Typo (plurality)
Linkify
Use string->uninterned-symbol instead of gensym

The reason these functions used gensym to begin with
was that fresh variables resulted in confusing error
messages of the form "Expected a, but got a".

An upcoming commit fixes these error messages, so
the gensym is replaced.
Abstract out "Expected foo, but got bar" errors

Use the new helper function to report errors more
helpfully when two identically named type variables
from different scopes are encountered.