Fix bool return types

`System.Boolean` is marshaled as a 4-byte int by default, but GLboolean is typedefed as a 1-byte unsigned char. Calli instructions do not appear to respect `[return: MarshalAs(UnmanagedType.U1)]`, so we need to handle this ourselves by emitting byte instead of bool on the p/invoke signatures.