Fix unload of recursively linked library

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

(cherry picked from commit a6ac54a215d6b64f5cc5a59b66c1dbfbb41ea9f5)

Change-Id: I6907c723d9fbdf6b2777f3f236b1e29b0843edd6
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 1b4fb62..acbb1b0 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;
     }