Coding style: Move forward declaration into pointer type.
Coding style: Don't use QScopedPointer

Empty destructor is still needed with QScopedPointer, so don't use
it and manually delete d in destructor instead.
Implicit sharing for Subject class