Hey there,
had a good look and it looks pretty awesome (get it?). I'd want you to know that I've decided to run with the basic idea your code, but there are a few of things that need tweaking.
Specifically, I've long been sitting on some patches that allow nwnx_connect to speak to it's client part nwncx_connect bidirectionally through custom netlayer messages. This is exposed through pluginlink on both ends, so any plugin on the server can send messages to any plugin on the client and vice versa with no hook hackery required. This will replace all the netlayer code you've pulled in with two simple HookEvent() calls. I will be cleaning that up and PR it upstream Any Day Now and then let you know here.
I'm also poking at completing the missing features, like keyboard input, form focus, right-click, and so on. For this, there might be some core patches to NWNCX necessary (a lot of plugin depend on these, I would think), so exposing them as PL events makes a lot of sense.
Thirdly, adding a cache dir for awesomium to store it's session data will do a world of good and allow getting rid of the layouts scheme, and instead let servers just tell the client to load a specific URL/execute raw JS, making it much more flexible for new PWs to implement.
All this will be a fair few days because I'm rather occupied otherwise real-life-wise. If you want to chat though, go on and grab me on IRC!
Cheers, niv