Add support for "indexed strings", which have named lookups to string ranges.

IndexedString holds a string and all named lookups to ranges inside the string.
An IndexedString is created from an existing UnicodeString, which has the
indices embedded within it. The current format is to start a range using
"@[name]" and end the last-opened range using "@[]". The range opening and
closing can be escaped using "@[[", which will be replaced by "@[".

Add class FormatArgumentsWithNames, for holding a set of named Formattable
objects.

Add seec::icu::format(), which formats a UnicodeString using arguments
provided by a FormatArgumentWithNames object.