RT #123498: Empty binding error in some cases (partial fix)

On MoarVM, if unexpected named parameters came in through capture or hash
interpolation, the error message would be empty.

An "if $error" would be false in the case, because $error is usually an empty
array. Changing it to an "if nqp::defined($error)" as the rest of the code
uses should prevent error messages from going missing.
native-type some constants in the binder

should not make things slower, I hope :-)
Micro-optimize Routine.assuming
signatures are also allowed to have invocants :)
allow @a[0,2...*] to work again