Jeff proposed a virtual playtesting software in this thread.
I had the exact same thoughts during the holidays! A "generic" application that you can feed all pieces of your game in and manipulate them over the internet with other people.
The difference with Vassal, Toth or Apprentice is the goal. Or rather, the users: playtesters and designers instead of players. Providing tools for the designers would be one of the top priority.
It means that the interface can be counter-intuitive and by that I don't mean a stupid interface. I mean a powerful & coherent interface with a high learning curve. A player alone would not put up with it but a playtester will be supervised by the designer. Also, the software does not have to prevent cheating, have high security, fast real-time speed, etc...
Tools such as the possibility for the designer to highlight insightful comments during the game so he can review them later. A playback system where the game can be viewed again and again (at variable speed) in the same exact way it was played, with all the talk and notes taken.
Here's what I have so far:
3 pieces of software would be needed : A server, a client and eventually a tool to package the games.
The server might be run by the designer, a playtester or be dedicated. It could be like a chatroom with permissions and the possibility to kick, ban, silence. We'll need a distinction between spectators & players. Designer (or someone acting as the GameMaster) can be a spectator or a player.
The server handle the game "world". It receives requests from the client (what they want to do with the objects) and make the changes (if accepted), then send update to all clients.
The client simply receive geometry information from the server and displays it. It also send action requests to the server. Send & receive all chat messages too. That's it. Of course, there's all the question of the interface what option to give.
A game could be many files (images, data, objects, templates) packaged in a compressed file and distributed previously by web or email. The server could also send it (or the diff.) to the client if they don't have it (or an earlier version). The objects or pieces of the game should be defined here using object oriented thinking, you have base default objects and you can get more precise by defining your own and what action can be used on them. Of course, it can be written by hand but a tool would become necessary once it's pretty complex.
Another thing to consider is the interface. What should be possible? As much as possible.