Documentation

Provides a hook for flagging whether a patch is "internal" to the repo
and therefore shouldn't be referred to externally, e.g. by inclusion in tags.
Note that despite the name, every patch type has to implement it, but for
normal (non-internal) types the default implementation is fine.
Currently only used for rebase internal patches.

maybe (const NotEq) (fmap isInternal patchInternalChecker) p
returns IsEq if p is internal, and NotEq otherwise.
The two-level structure is purely for efficiency: Nothing and 'Just (InternalChecker (const NotEq))' are
semantically identical, but Nothing allows clients to avoid traversing an entire list.
The patch type is passed as an FL because that's how the internals of named patches are stored.