Everything was already in place, but not used for variadic parameters.
On the other hand fixed parameters sets are currently bugged, as they don't
reject extra arguments (they act like variadic parameters set). This commit adds
a TODO mentionning that.
Currently, the environment is passed as a `NValue m`, but is assumed to be
a set every single time it is used. This commit changes it `Map Text (NValue
m)`. Since this is used a lot, it defines a new type alias:
```
type ValueSet m = Map.Map Text (NValue m)
```
This has multiples benefits:
- Simplify some code by removing all the checks that the env is indeed a set
- Simplify the usage of the module by making clear that we need a set as the
environment. (I especially like this, since it took me a while to figure out
what that argument was supposed to be the first time).
- Make it simple to inject functions in the environment (for example to have
builtins) since now the function definition doesn't need to unwrap the set.