[indic] Don't apply blwf before base under old-spec mode

Test case: U+09AC,U+09CD,U+09A6 with Lohit-Bengali 2.5.3.
[indic] Fix pref vs blwf interaction

If a glyph can be both blwf and pref, we were wrongly sorting it
in the post position instead of below position.
[indic] Apply calt,clig in the same stage as presentation features

Whic means these twp are applied per-syllable now.  Apparently
in some Khmer fonts the clig interacts with presentation features.

Test case: U+1781,U+17D2,U+1789,U+17BB,U+17C6 with Mondulkiri-R.ttf
should produce one big ligature.
[indic] Improve clusters in presence of reph
[otlayout] Simplify ligate_input()

Shouldn't change behavior at all, but is faster / more robust.
[otlayout] Increase MAX_CONTEXT_LENGTH

It's cheap.
[otlayout] Minor
[otlayout] Minor
[indic] Adjust Sinhala cluster merging under uniscribe

Similar to 190c8f2b60af0851bf692f653c1604cfbf0561a5 but for
Sinhala.
[indic] Add BASE_POS_LAST_SINHALA

Previously we planted this into the mode used for Khmer.  There's not
really much in common between the two, so separate again.
[indic] Clean up Khmer and Sinhala base finding algorithm
[indic] Pass zero-context=false to would_substitute for newer scripts

For scripts without an old/new spec distinction, use zero-context=false.
This changes behavior in Sinhala / Khmer, but doesn't seem to regress.
This will be useful and used in Javanese.
Route Buginese through the SEA shaper

Both Indic and SEA seem to do it just fine, but SEA is much
simpler.
[indic] Minor refactoring of would_substitute()
[indic] Minor refactoring of reph handling
[indic] Towards supporting atomicly-encoded prebase-reorderings
[otlayout] Guard against use of ReverseChain through Context
[indic] Adjust Javanese base algorithm