Break out the broom for some cleanup work

Maintain the MAINTAINERS file. Removed src/plugins/*.am listings. Added
a couple of plugins.

Add vlib_process_create (vlib_main_t *vm, char *name,
                         vlib_node_function_t *f, u32 log2_n_stack_bytes);
/** @brief Create a vlib process
 *  @param vm &vlib_global_main
 *  @param f the process node function
 *  @param log2_n_stack_bytes size of the process stack, defaults to 16K
 *  @return newly-create node index
 *  @warning call only on the main thread. Barrier sync required.
 */

This function makes it easy to spin up periodic processes when features
are enabled for the first time. That coding pattern is highly recommended.

Update the emacs-lisp plugin generator to use vlib_process_create,
instead of generating static periodic process nodes.

Change-Id: Icda33e93b9034779d3a3e228cd1110af14b058a5
Signed-off-by: Dave Barach <dave@barachs.net>
diff --git a/src/vlib/node.c b/src/vlib/node.c
index 49c7a40..44a3a3e 100644
--- a/src/vlib/node.c
+++ b/src/vlib/node.c
@@ -757,6 +757,34 @@
   return error;
 }
 
+u32
+vlib_process_create (vlib_main_t * vm, char *name,
+		     vlib_node_function_t * f, u32 log2_n_stack_bytes)
+{
+  vlib_node_registration_t r;
+  vlib_node_t *n;
+
+  memset (&r, 0, sizeof (r));
+
+  r.name = (char *) format (0, "%s", name, 0);
+  r.function = f;
+  r.process_log2_n_stack_bytes = log2_n_stack_bytes;
+  r.type = VLIB_NODE_TYPE_PROCESS;
+
+  vlib_worker_thread_barrier_sync (vm);
+
+  vlib_register_node (vm, &r);
+  vec_free (r.name);
+
+  vlib_worker_thread_node_runtime_update ();
+  vlib_worker_thread_barrier_release (vm);
+
+  n = vlib_get_node (vm, r.index);
+  vlib_start_process (vm, n->runtime_index);
+
+  return (r.index);
+}
+
 /*
  * fd.io coding-style-patch-verification: ON
  *
diff --git a/src/vlib/node_funcs.h b/src/vlib/node_funcs.h
index bf11a0e..c9ff93d 100644
--- a/src/vlib/node_funcs.h
+++ b/src/vlib/node_funcs.h
@@ -1186,6 +1186,16 @@
   em->counters[node_counter_base_index + counter_index] += increment;
 }
 
+/** @brief Create a vlib process
+ *  @param vm &vlib_global_main
+ *  @param f the process node function
+ *  @param log2_n_stack_bytes size of the process stack, defaults to 16K
+ *  @return newly-create node index
+ *  @warning call only on the main thread. Barrier sync required
+ */
+u32 vlib_process_create (vlib_main_t * vm, char *name,
+			 vlib_node_function_t * f, u32 log2_n_stack_bytes);
+
 #endif /* included_vlib_node_funcs_h */
 
 /*