Merge from upstream harfbuzz

This commit also adds state machine files (autogenerated from Ragel
sources) to the repository so that we don't have a build-time dependency
on the Ragel tool. This choice does mean that we have to be careful to
update these files when merging.

Change-Id: I88eb8d81382ddd8cf75bb2ea0585e9d6553744b0