Monoid is just a binary associative "mappend" function + an identity "mempty" to that function such that "mappend whatever mempty = whatever"
It's a very common structure across programming domains.
The identity overlay is "self: super: {}"
Overlay combination is associative. If you have N overlays, it doesn't matter the order to apply them left-to-right.
In fact, I believe overlays are also commutative. Which makes sense - it would be silly if you wrote an overlay in isolation and how it worked depended on where it landed in your overlays list.