Crash fix: Umm...Generics and building a list of any. Test added!

The crashing function is this:

```
function k[A](A v1, A v2 => list[any]) {
    return [v1, v2, 10]
}
k(1, 2)
```

The reason for the crash is not as complicated as it may seem. The vm is
responsible for mapping parameter types (the A's) to what was actually given
(integers, in this case).

The vm sees that there are four unique signatures to work with: A, list[A],
integer, and any (I think, anyway. Which ones is not that important). It knows
this because emitter said so.

So vm goes to build a map to convert what it has into concrete types. Now, it
has 4 unique ones, but it actually gets more than that. Let's say it gets 6.

...The initial collection (when collecting signatures from parameters) did
not check that the signature 'map' already had a given signature. So too many
spots were used up. When it came time to do the hard type calculating
(probably for figuring out what A should be?) it would attempt to store the
signature in a map too far and...crash. Because too many slots were already
used up.

The fix is rather small, and a test case has been added to make sure that this
silly thing doesn't happen again.