Fix inline functions for GCC on Mac OS X

IOObject has two inline functions which call themselves recursively. GCC doesn't seem to be able to deal with this, while clang is.

The `IOINLINE` macro is defined as `static inline` on OS X if `NS_INLINE` is not defined; otherwise the predefined value of `NS_INLINE` is used. `NS_INLINE` is only defined in ObjC code (e.g., the ObjC bridge), so in practice a different definition of `IOINLINE` is used there from everywhere else. The default definition of `NS_INLINE` uses the `always_inline` keyword. This leads to build errors on GCC (but not clang): GCC is directed to always inline the inline functions, but it can't inline the recursive functions and hence errors out.

This patch introduces a new `IOINLINE_RECURSIVE` macro to cover the recursive functions; it uses `always_inline` where possible (e.g. clang) and falls back to `static inline` otherwise. Since this is separate from the `IOINLINE` macro, it makes it possible to use `always_inline` for the other inline functions whereas it wasn't before.

This has been tested using clang, GCC 4.2 and GCC 4.8 on Mac OS X 10.9.2 and GCC 4.2 on Mac OS X 10.6.8; it builds on all of them.

Fixes #260.