Add filter options and ALLOW_UNSAFE

Proposed fix for #2325 

Diff and status do not want `core.safecrlf` to actually raise an error regardless of the setting, so this extends the filter API with an additional options flags parameter and adds a flag so that filters can be applied with `GIT_FILTER_OPT_ALLOW_UNSAFE`, indicating that unsafe filter application should be downgraded from a failure to a warning.

This has a side-effect that, at least for the time being, `core.safecrlf = warn` will do nothing whereas before this PR it would generate an error.