Revert "Revert "Matcher: Avoid excessive String copies.""

This reverts commit 53e4e15bb0fc2f789274998f3ce62c4fc021fbe8.

Fixes a memory leak introduced in 53e4e15bb0f. Also :
- switches to using ScopedStringChars to simplify the code further.
- better ICU error checking.

Bug: 36366255
Bug: 36818684

Test: cts -m CtsLibcoreTestCases
Test: ScannerTest on host/x86

(cherry picked from commit 9084fb6f7c4da5d42c6b58b523d71e8ad65dd754)

Change-Id: Iad7c5b07647542bcaa2e6621107c0cd206249bae
(cherry picked from commit 285e53bf2b7c81134ae8bdb4044df216610bed17)
3 files changed