o move mutex init/destroy logic to the module load/unload hooks;   otherwise they are initialized twice when the code is statically   configured in the kernel because the module load method gets   invoked before the user application calls ip_mrouter_init o add a mutex to synchronize the module init/done operations; this   sort of was done using the value of ip_mroute but X_ip_mrouter_done   sets it to NULL very early on which can lead to a race against   ip_mrouter_init--using the additional mutex means this is safe now o don't call ip_mrouter_reset from ip_mrouter_init; this now happens   once at module load and X_ip_mrouter_done does the appropriate   cleanup work to insure the data structures are in a consistent   state so that a subsequent init operation inherits good state
o move mutex init/destroy logic to the module load/unload hooks;
  otherwise they are initialized twice when the code is statically
  configured in the kernel because the module load method gets
  invoked before the user application calls ip_mrouter_init
o add a mutex to synchronize the module init/done operations; this
  sort of was done using the value of ip_mroute but X_ip_mrouter_done
  sets it to NULL very early on which can lead to a race against
  ip_mrouter_init--using the additional mutex means this is safe now
o don't call ip_mrouter_reset from ip_mrouter_init; this now happens
  once at module load and X_ip_mrouter_done does the appropriate
  cleanup work to insure the data structures are in a consistent
  state so that a subsequent init operation inherits good state

Reviewed by:	juli

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase