Data driven component systems aren't anything new, that's how Unity and the latest Unreal work. Pretty much this https://en.wikipedia.org/wiki/Entity_component_system. There was also a good description of this pattern in the book "Game Engine Architecture", which is a quite excellent read.
That said, while a quick-and-dirty implementation can be done in a day(hardcoding the component classes in C++), I am a bit of an idealist and would like to aim for maximum flexibility. Ideally I would like to write the data definition of a game entity in Lua, add triggers that apply certain behaviors (also defined in Lua), but store and operate on the data in C++.
P.S. E.g. Unity: http://docs.unity3d.com/Documentation/M nts40.html Note that some components simply have to be hardcoded, such as the physics, graphics, audio, etc. The rest, such as stats, abilities, dialog lines, can be defined purely in script.