Fix unload of recursively linked library

  Expanded test for recursive libs. Fixed bug with unnecessary
  soinfo_free of already loaded library.

Change-Id: I2cc19f2650c8b12a35feeac127ef608ebba44d88
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 0e5142a..4bc10c5 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -843,6 +843,7 @@
   }
 
   if ((dlflags & RTLD_NOLOAD) != 0) {
+    DL_ERR("library \"%s\" wasn't loaded and RTLD_NOLOAD prevented it", name);
     return nullptr;
   }
 
@@ -950,7 +951,6 @@
     soinfo* needed_by = task->get_needed_by();
 
     if (is_recursive(si, needed_by)) {
-      soinfo_free(si);
       return false;
     }