cairo: don't render text when text matrix is not invertable

Emulates acroread behavior.

Bug 78042
cairo: Only embed mime data for gray/rgb/cmyk colorspaces

Bug 80719
cairo: only embed mime data if image decode map is identity

https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/1317517
Make Attribute::getName() work when UTF-16BE is used

Contains some ideas by me
Bug #84722