Basically for an addon, import as a module, call the modules register method to enable.

The folder your addon is in is the module name, eg `mesh_stairs`


The operators you have in the operators folder already have a register and unregister method. Can `from ./operators import foo` and in register call `foo.register()`  (_as answered by @RJG while I was dawdling along_)


**Dynamically loading each module in operators folder.**

    mesh_stairs/
        __init__.py
        operators/
            __init__.py
            foo.py
            bar.py


Here is a method I played around with for `bat_tools`  to manage a number of  "addons" into one. *Enabling / disabling addons for workspaces has prompted somewhat of a rethink.*  

Pretty generic. Using `__all__` and globals. Could load any list or dict etc instead.  


Script: `mesh_stairs/operators/__init__.py`

    """
    BATTOOLS edit re stairs q.
    """

    __all__ = []


    def register_tools():
        """ """
        for name in __all__:
            register_tool(globals()[name])


    def register_tool(tool):
        """

        :param tool:

        """
        print("REGTOOLS", tool)
        tool.register()


    def unregister_tools():
        """ """
        for name in __all__:
            unregister_tool(globals()[name])


    def unregister_tool(tool):
        """

        :param tool:

        """
        print("UNREGTOOLS", tool)
        tool.unregister()



    def load_tools():
        """ """
        __all__.clear()
        import pkgutil

        for m in pkgutil.iter_modules(__path__):
            tool = __import__(m.name, globals(), level=1)
            __all__.append(m.name)



    load_tools()

Print in system console after enabling addon.

    REGTOOLS <module 'mesh_stairs.operators.kitfoxStairs' from '/home/batfinger/.config/blender/2.82/scripts/addons/mesh_stairs/operators/kitfoxStairs.py'>
    REGTOOLS <module 'mesh_stairs.operators.kitfoxStairsCurved' from '/home/batfinger/.config/blender/2.82/scripts/addons/mesh_stairs/operators/kitfoxStairsCurved.py'>


Script: `mesh_stairs/__init__.py` 


    bl_info = {
        "name": "Curved Stairs Mesh Generator",
        "description": "Adds new mesh builders for quickly creating staircases.",
        "author": "Mark McKay",
        "version": (1, 0),
        "blender": (2, 80, 0),
        "location": "View3D > Add > Mesh",
    #    "warning": "", # used for warning icon and text in addons panel
        "wiki_url": "https://github.com/blackears/blenderStairs",
        "tracker_url": "https://github.com/blackears/blenderStairs",
        "support": "COMMUNITY",
        "category": "Add Mesh"
    }


    from . import operators
    
    def register():
        operators.register_tools()
        
    
     
    def unregister():
        operators.unregister_tools()