Warn on unused variables

To do this, we maintain an initially empty bitmap, updating it every
time a variable is used, and report any unset bits after the entire
function has been checked.  We have to do some extra work to make sure
we don't report any of the PL/PgSQL's internal variables as unused.

Also IN/OUT variables are never considered unused, though that could be
added later.  The reasoning here was that they are considered part of
the function's API, and thus warning about them is likely more annoying
than helpful.