drm: Implement kref_get_unless_zero()

Fortunately the existing atomic_add_unless() function is able to manage
all the complexity of this algorithm by itself.
Remove some casts of NULL to pointer types which had accumulated.

They were brought back from FreeBSD with various updates.
iscontrol(8): Use offsetof().