ICU docs say not to create a new break iterator each time as boost.locale does, and in fact creating the break iterator is about 90% of the run time of the character counter, so use ICU directly and cache the break iterator.