Teach compile time bind analysis about (|) sig.

It now recognizes such a signature as accepting anything, and thus
certain to be a successful match.
Check proto as well as candidates in optimizer.

This fixes issues where we could end up inlining calls to candidates
that would never be reachable due to restrictions in the proto. Also,
we catch some such issues at compile time now.
Fix incorrect exp proto.