Enable dependencies in the metadata for BAD entities

Allow Channels and Procedures to store dependencies on
Datasets and Functions

Prevent dropping of these dependencies

Add Error tests

Change-Id: Ic6ac2daad03844a042aded8e17bb231a06f59cbe
diff --git a/asterix-bad/src/main/resources/lang-extension/lang.txt b/asterix-bad/src/main/resources/lang-extension/lang.txt
index 7c5931c..02aba78 100644
--- a/asterix-bad/src/main/resources/lang-extension/lang.txt
+++ b/asterix-bad/src/main/resources/lang-extension/lang.txt
@@ -129,9 +129,14 @@
   Token endPos;
   Statement functionBodyExpr;
   Expression period = null;
+  String currentDataverse = defaultDataverse;
+  createNewScope();
 }
 {
      "procedure" fctName = FunctionName()
+     {
+        defaultDataverse = fctName.dataverse;
+     }
      paramList = ParameterList()
     <LEFTBRACE>
   {
@@ -149,6 +154,7 @@
       functionBody = extractFragment(beginPos.beginLine, beginPos.beginColumn, endPos.beginLine, endPos.beginColumn);
       signature = new FunctionSignature(fctName.dataverse, fctName.function, paramList.size());
       removeCurrentScope();
+      defaultDataverse = currentDataverse;
     }
   ("period" period = FunctionCallExpr())?
   {