PassInfoMixin now declares that passes inheriting from it are by default
optional. Using RequiredPassInfoMixin overrides the pass to be required.
All adaptors/managers must be required, since the pass(es) they are
wrapping may be required.
In the future, optnone, opt-bisect and llc -startr/-stop will use this mechanism to
determine which passes to skip.
This is an alternative to https://reviews.llvm.org/D82344.