I have spent all of December working on the fourth (and fifth) and hopefully final versions of my Add/Remove Layers Widget. This version of the widget is designed to be used in an Enterprise setting, as it is fully customizable from a relatively easy to use Settings Panel. Relative to teaching some how to code at least. As the person deploying the widget to your Enterprise, you can (and should) also pre-load this widget with pre-defined layers and groups that your users will find useful that they can use to start building their own layers and groups.
Purpose:
The purpose of this widget is to allow end-users to customize their maps at runtime. They can add/remove groups of layers at once or single layers one at a time. Adding layers as needed reduces map and layer list clutter, as well as, reducing memory and server load. FeatureLayers added with this widget have full data functionality as if they were added by the OOTB Add Data Widget. End users also can create their own groups of layers that persist between sessions for further personalization.