Originally Posted by mike11
* easily configurable (defining hot-keys, pop-up menus) by text files (no code recompilations)
"Easy" is a subjective term, but going farther, "code recompilations" is also a bit subjective. Well, not that much, but there's really not much difference between using Lua in Awesome versus using Haskell in Xmonad, even if in the former case you don't recompile anything...
You didn't say whether you would be willing to use a keyboard-driven tiling WM, so you probably wouldn't.
About every modern WM is. Specifically, wmctrl works with EWMH/NetWM hints, so any WM obeying these will work with wmctrl. *But*, really, most modern standalone WM's do not need wmctrl for anything because they already have lots of functions builtin. There are some like Openbox that are quite configurable, there are some that are simpler (Fluxbox), there are some that are dumb (Metacity, WindowLab, EvilWM) and there are some others that are really configurable like Fvwm, Awesome and most tiling WMs.
* small memory and CPU footprint
This is a bit subjective as well, there are WM's that will take less than 1 MB, *box WMs will take several MB's. Fvwm can be as light or heavy as you wish but it's probably the one that will give you the most functionality using only 3-4 MB of ram. Once you start loading modules the story is quite different.
They all are small enough so they are well tested and stable, even if you use development versions. In which regards speed, it all comes down to what do you understand by that word. In WM's you can measure speed in many ways (boot time, time to map a given window, responsiveness...).
I'd start with fluxbox, then try openbox if you need extra power, if that's still underpowered for you then go fvwm, sawfish, awesome or something else.