Fleshed out syntax for parameter declarations.

Now supports positional vs. named, required vs. optional, and single
vs. varadic (collector) as well as an updated syntax for type constraints
using the "where" keyword instead of "as", to avoid confusion with "as"
for lossless type conversions.