Use portable types in the C/C++ code generator
C++11 brought new narrowing rules which, among other things, prohibit saving -1
or -128 into a char when the platform's char is actually unsigned. This causes
troubles when cross-compiling from e.g. amd64 to ARM.
This patch makes sure that the host and target both use the same types with the
equivalent range of storable values. Note that we cannot use the int_fast*_t
types because their size actually differs between platforms, and this size
appears to be used in ragel's code for explicit over/underflow checking.