Remove self-contradictory zend multibyte assertion

Code that explicitly exists to handle an incompatible internal
encoding should not assert that the internal encoding is compatible.
Fix yy_limit computation after encoding switch

The three assignments above this line are still broken - they assume
that byte offsets in one encoding directly map to byte offsets in
another encoding.

I'm fixing the length here because it is the one causing out-of-bounds
reads and is easy to fix. For the others we'd have to actually compute
new offsets.
Simplify ASSIGN code