Improve flexibility of structure pattern

* buttonGroups is now a list of lists instead of a dictionary with primary and secondary keys
* buttons can now specify flyout views in their options
* buttons can now specify an isEnabled function to determine when they are disabled
improve flexibility of structure pattern: remove some invasive defaults