MDL-41885 lib: Introduce component_callback_exists

Determines if a callback in a module exists without needing to
call that callback.
MDL-41885 modules now declare use of question bank

* FEATURE_USES_QUESTION_BANK is now a module_supports flag which declares
  that an activity uses the question engine.

* question_module_uses_questions can be used to determine if a module
  uses the question bank.
MDL-12403 backup: Ability to exclude question bank

Now users can choose to exclude the question bank from the backup,
this will in turn prevent any modules which use the question bank
from being included in the backup.
MDL-12403 backup: configure question bank in automated backups
MDL-12403 backup: ability configure default for question bank excludes
MDL-12403 backup: force config of questionbank settings

To prevent upgrades causing incomplete backups.