It's not uncommon for separate components to share common
Options, e.g., it's common for related Passes to share Options in
addition to the Pass specific ones.
With this change, components can use OptionCategory's to simply help
output even if some of the options are shared.
Can you explain why Categories cannot be empty? Is it because an option has one category when it is registered? (Sorry as I'm not very familiar with the code)