What you're trying to do is basically move the selection script to the server side. This is exactly what Google is doing for years (you'll find mentions of SSSS in comments, commits or issues, standing for Server-Side Selection Script).
What you need is a special Linker to output each permutation's script in a standalone script (rather than one that expects to be loaded by a JS selection script). I never really thought about how it would/should work so I'm afraid I can't provide more info on this (ask Googlers though; I believe they somehow extend CrossSiteIframeLinker).
To choose the right script to use, the CrossSiteIframeLinker generates a file with the property mappings which you should be able to use.
I wonder what kind of work would be needed if you have other binding properties than user.agent (and/or locale) that couldn't be determined on the server-side. Maybe you'd need to collapse those so that the selection script only deals with properties that can be computed on the server-side (again, ask Googlers if they can help).
And for DevMode, you'd have to load devmode.js somehow instead of your permutation. That can easily be triggered by the presence of ?gwt.codesvr in the query-string.
That said, I have no idea what's needed otherwise (e.g. if you want to use your server-side-computed property values)