core: add vec::bsearch.
core: replace unicode match exprs with bsearch in const arrays, minor perf win.
auto merge of #5945 : graydon/rust/fix-unicode-tables, r=pcwalton

This switches the unicode functions in core to use static character-range tables and a binary search helper rather than open-coded switch statements. It adds about 50k of read only data to the libcore binary but cuts out a similar amount of compiled IR. Would have done it this way in the first place but we didn't have structured statics for a long time.