Fix union-based type-punning buglet

Revert to union-based bcf_float_is_* macros with defined semantics, as
the issue here is about incorrect optimised code not just GCC warnings.

(The previous union initialiser initialised the wrong member of u.
This explicitly sets the desired float member.)
Use static inline, not just inline

Declare these as static inline in the C99-approved way, except for
bcf_gt_type() which shouldn't be inline at all.  Fixes issue #15.