ffi: implement separate :function-pointer type
While casting (void*)
pointer to function pointer usually works it's undefined behaviour and we should get rid of that. Proposed solution is to add new FFI type :function-pointer
and use it in callback (and in examples).