Crasher fix: Passing varargs between generics. Test added.

This one is a bit simpler than the last one:
    function f[A, B, C, D, E, F](list[F] values...) { }
    function k[A](A v1, A v2) { f(v1, v2) }
    k(1, 2)

This crashes because varargs assumes that it can use the signature of the
callee as the signature of the list for varargs. Up until varargs came along,
this was just fine.

What happens is that k has one generic type: A. But the list that it has to
build for f contains a list[F] (what f wants), instead of building list[A]
(which is what it's REALLY giving). It later tries to resolve for 'F' and
encounters the impossible: A generic is given, but can't be found. Thus, the
interpreter crashes.

The fix is simple: If passing varargs and the list has template entries, then
the first arg given is used to build a list signature for the resulting list
value that gets passed. k then sees a list[A] which it patches to
list[integer] before passing it to f. f sees that it gets a list[integer] for
the values and is happy.

A test has been added to pre-commit-hook.py so this won't come back.