Parse closure parameters

See SO6/Closure parameters.  For example:

    sub limited_grep(Int $count, &block:(Dog)), *@list) { ... }

These currently sort-of parse, but :(Dog) is considered a *trait*, and
that doesn't sit right with something in the compiler, so it results in
this error:

    Cannot invoke this object (REPR: P6opaque, cs = 0)
Don't include closure parameter signature in lexical name

See previous commit for a little more detail.  `&block:(Dog)` was
getting inserted into the pad as `&block:(Dog)` rather than just
`&block`
Fix %*PARAM_INFO<variable_name> with closure parameter

See previous commit's description, and the one before that.

Otherwise, `&block:(Dog)` is installed as `&block`, but binding code
is still issued as `&block:(Dog)`
Grab subshortname, sublongname, sigterm from STD.pm6

We'll be using these for parsing out closure parameters
Use sublongname to parse closure parameters
Add post constraint for checking closure parameter signatures

A lot of this was lifted out of make_where_block
Allow make_where_block to take a custom QAST block

Normally, when building a where block, we want to use the current value
of $_.  Sometimes, however, we want to perform additional work (in the
case of closure parameters, we want to match against $_.signature rather
than $_ itself)