vtkSmartPointer now restricts constructors to allowable types
Previously vtkSmartPointer would use the CheckType function
to do an implicit cast to verify a type was allowable. Instead
we can use std::is_convertible
and disable the functions.
This makes it clear that these functions are intended only
for derived types.