always return NULL in _unref() APIs

Returning anything else but NULL would suggest the caller's
reference might still be valid, but it isn't, because the
caller just invoked _unref() after all. This turns the return
value into a typesafe shortcut that allows unreffing and
resetting a reference in one line. In contrast to solutions
for this which take a pointer to a pointer to accomplish the
same this solution is just syntactic sugar the developer can
make use of but doesn't have to, and this is particularly
useful when immediately unreffing objects returned by function
calls.
diff --git a/src/libabc.c b/src/libabc.c
index cbbc16a..c3c1fef 100644
--- a/src/libabc.c
+++ b/src/libabc.c
@@ -173,8 +173,7 @@
  * abc_unref:
  * @ctx: abc library context
  *
- * Drop a reference of the abc library context. If the refcount
- * reaches zero, the resources of the context will be released.
+ * Drop a reference of the abc library context.
  *
  **/
 ABC_EXPORT struct abc_ctx *abc_unref(struct abc_ctx *ctx)
@@ -183,7 +182,7 @@
                 return NULL;
         ctx->refcount--;
         if (ctx->refcount > 0)
-                return ctx;
+                return NULL;
         info(ctx, "context %p released\n", ctx);
         free(ctx);
         return NULL;
@@ -257,7 +256,7 @@
                 return NULL;
         thing->refcount--;
         if (thing->refcount > 0)
-                return thing;
+                return NULL;
         dbg(thing->ctx, "context %p released\n", thing);
         free(thing);
         return NULL;