Make first round of loading modules just source modules, and then use a second round to launch init functions.

   We had a problem where some init functions required functions that hadn't been sourced yet. This is solved by sourcing all of the modules first, and then 'cross calling' the
   init function that is in all user modules.

   modified:   core/mbs.sh
	modified:   ext/mbs-assert.sh
	modified:   ext/mbs-func.sh
	modified:   ext/mbs-mod.sh
Introduce post-init actions.

When loading modules, sometimes they get unhappy because something they expect to see isn't there.
Wouldn't it be nice to be able to log a failure message, post a command to fix the problem, and have it
executed after all the modules load? This way all modules can handle setting up missing environment components.

For example, the monitor-pkgs module may check for installed modules and post-init run the install commands for ones
that are not found so you don't have to. Similarly, the mount module may hope to create and mount missing directories for you.

modified:   core/mbs.sh
new file:   ext/mbs-do.sh
Trying to get all changes committed as we debug.

modified:   core/mbs-lib.sh
modified:   ext/mbs-do.sh
   Test commit -- haven't been able to push for a while.

   modified:   ext/mbs-func.sh