Adds virtual destructors on Interfaces

Classes with at least one virtual function needs a virtual destructor.
This patch adds virtual destructors to  Interface classes

And also enables  'warn on  missing virtual destructors'