regexes return a list when captures are involved

This also fixes an issue where matching against an empty string
always was true.
fixed cmp, utf8.P5Str and added pack "U"

cmp had two multi candidates with identical signature and utf8.P5Str tries to return an
utf8-ecnoded string before it falls back to binary.
status update after pack.t unfudges