ffi: use normal pointers for buffer_* types

To support a wider range of ffi programs, use unoptimized pointer
for buffer types.
ffi: BoolRwStrategy: require boolean value
ffi: abstract_memory: check for NullPointer before access
ffi: handle errors when loading dynamic libraries
ffi: support subclassing FFI::{,Memory}Pointer
ffi: Pointer - initialize autorelease property
ffi: MemoryPointer - improve initializer type checks