Suggestion: Favour `fail!` over `Option<T>` for error states

When foreign functions are nearly sure to return proper values dont wrap in an Option monad for invalid data but just `fail!`.

I think it is OK to `fail!` instead of Option when there is really an error state. The resulting api is also a lot cleaner.