QTextEngine::shapeTextWithHarfbuzz() code simplification

Move (sub-)item boundaries calculation (aka fallback font items)
outside to be shared with HarfBuzz-NG based shaping a bit later.

This implementation might silently break words or even graphemes
so it needs to be reworked anyways; keeping it in a single place
would make futher work some cheaper.

Change-Id: Id9ca82b40e90b07ca29363fd43247c5fa9897eff
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QTextEngine::shapeText(): Better error handling for corner cases

Use Q_UNREACHABLE() instead of silly return to catch shaping errors,
which are fatal ones in fact, since the application would assert/crash
some later due to a hard dependency on the shaping result.

Change-Id: Ie58a2f2686a795f6178a588de6f2a2e37e1ed13c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Add HarfBuzz-to-Qt bridging code

Change-Id: I2f61566fe69d18b80d5831238beb27b34b7be1c8
Reviewed-by: Lars Knoll <lars.knoll@digia.com>