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'
Merge pull request #4343 from ricardoquesada/virtual_destructors

Adds virtual destructors on Interfaces and enables 'warn on missing virtual destructors' for xcode.
Merge branch 'develop' into constructors_are_protected