Rework GV typing: require type annotations on arguments to lambda and
with, require linearity flags on lambda, get closer to correctly typing
(modified) GV expressions.

See notes at bottom of README for discussion of some of the challenges
in typing GV as specified.