lugre is a library, only code that is not specific to iris or uo should go there (we also use lugre for a spacegame)
there shouldn't be two files with the same name i think, but even if, lua isn't interested in the filenames, they are all included from somewhere. e.g. data/lua/main.lua (iris files) and lugre/lua/lugre.lua(lugre files) and data/lua/net.protocol.lua(net.* files) should be most of them.
about the obj/, net/ and gui/ folders : some time ago there was a rather deep reorganization (knut branch) but while the overall structure was improved quite a bit, not all parts of it were finished, but it was time to merge it back to the rest, so development itself could continue without the branch and trunk diverging too much, so it was merged back together.
since also the iris specific code is seperated from the lugre lib code, i advise using some form of "search in all files" that covers all dirs, then you don't have to bother with the folder structure.
btw, an overview over the lugre code can be found here :
http://sfz.schattenkind.net/wiki/index. ... e_Overview
but it is for the sfz code, so it doesn't cover the iris part, but the lugre-lib code is the same in both projects.
there is also a (rather experimental) api-doc for lua and c++ :
http://zwischenwelt.org/~hagish/irisdoc ... _cpp/html/
http://zwischenwelt.org/~hagish/irisdoc ... _lua/html/
about garbage collection of lua : it cannot know when a graphical object isn't needed anymore and should be closed, so you have to destroy those manually.
Since most c++-lua-bindings are of graphical nature, those usually have to be destroyed manually.
about moving widgets out : you can just set them to invisible.
SetVisible(false) or similar.