Move libffi backend entirely within the foreign subpackage

The `funptr` and `funptr_opt` views now live in `Foreign` (df10e17).

Checks for which types can be used as argument or return types now distinguish between what's valid in C and what's supported by libffi (038420b).