Add a new data engine

Writting a new data engine is bascilly to derive from QCSDataEngine and implement the pure virtual methods. Please refer to the builtin simulation data engine for example.