schema compile REFACTOR split implementing and compiling schemas

Difference being that implementing checks that a new
module can be implemented and performs one-time compilation
tasks such as compiling identities and adding its references
to augment and eviation target modules, which are also
implemented. Compilation then actually creates the compiled
module and can be performed in each recompilation.
diff --git a/src/path.c b/src/path.c
index 293c1e5..1fd57d3 100644
--- a/src/path.c
+++ b/src/path.c
@@ -433,6 +433,7 @@
 
             assert(unres);
             LY_CHECK_GOTO(ret = lys_implement((struct lys_module *)*mod, NULL, unres), error);
+            LY_CHECK_GOTO(ret = lys_compile((struct lys_module *)*mod, &unres->ds_unres), error);
         }
 
         LOG_LOCBACK(cur_node ? 1 : 0, 0, 0, 0);