It would be nice to have a standardised way to indicate whether modules support certain features. At the moment, generally this is done by checking whether a function exists, which is not a great way to do it (and, for new module developers, can be prone to error).
I threw some code together for the attached patch - this patch is for 1.9 just because, obviously there is no intention this would ever go into 1.9, also I'm not sure about the sketchy exception usage. So I'm not really expecting this would be checked into anything as-is, but if you think it's a good idea, I can put it into 2.0 later as part of the completion-tracking (conditional activities) work.
Basically you call
then that opens quiz/lib.php and calls
which can then return true or false. (Some features might be defined to have values instead so could also return something other than plain true.)
If the function doesn't exist [legacy support] it returns false.
We could also add extra legacy support if features are added eg FEATURE_CRON that could be checked the 'old' way without having to change modules, I have indicated where this would go inside the plugin_supports code.
If it was decided to make modules entirely OOP for 2.0 then this approach would not be appropriate and we would probably be better off using interfaces or something.