Document Msf::Simple::Framework.simplify

MSP-11671
Document Msf::Simple::Framework.create

MSP-11671
Merge branch 'bug/MSP-11672/double-init-module-paths' into feature/MSP-11671/msfconsole-defer-module-loads

MSP-11671
msfconsole --defer-module-loads

MSP-11671

Add command line option --defer-module-loads to msfconsole.  It will
stop `Msf::Ui::Console::Driver` from calling
`framework.modules.init_module_paths` AND
`framework.modules.refresh_cache_from_database`.  This flag is only
meant to speed up msfconsole boot when modules do not need to accessed,
such as during cucumber testing of command help or command line options.
Fix RUBYOPT to be debugger compatible

MSP-11671

RUBYOPT needs to be appended to so that debugger is always first.
--defer-module-loads when testing help

MSP-11671

Changed runtime of `rake cucumber` from average (n=10) of 164.90 seconds to
average (n=10) of 153.29 seconds for a -7.04% decrease.  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing
Use -x when testing help

MSP-11671

Instead of interactively typing `help` and `exit` use `-x` to run the
commands, which changes the average (n=10) time for `rake cucumber` from
153.29 seconds to an average (n=10) of 32.21 for a -78.99% change from
the last commit and a -80.47% change from the beginning of this branch
(3c3792330c0d9450aaa2645e9457f67bb955b46d).  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing
"With all 4 locations, --yaml wins" --execute-command

MSP-11671

Use `--execute-command` instead of interactly running msfconsole and
typing `exit`.  Changes the average runtime for `rake CUCUMBER_OPTS="-r
features" FEATURE=features/msfconsole/database_yml.feature:13
cucumber:boot` from 141.93 seconds (n=10) to 51.78 seconds (n=10) for a
-63.52% change. Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"With all 4 locations, --yaml wins" --defer-module-loads

MSP-11671

Add --defer-module-loads to msfconsole run to reduce average (n=10)
running time from 51.78 seconds to 40.38 seconds (-22.02% change).  This
is a -71.55% change since 4eb9a7563a3d89280d12a0be69ff8ef5de5cd317.  Raw
data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"Without --yaml, MSF_DATABASE_CONFIG wins" --execute-command

MSP-11671

Pass `--execute-command exit` to `msfconsole` instead of running it
interactively and typing `exit`.  Average (n=10) runtime for `rake
CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:54 cucumber:boot`
change from 138.84 seconds to 52.96 seconds (-61.85%).
"Without --yaml, MSF_DATABASE_CONFIG wins" --defer-module-loads

MSP-11671

Add `--defer-module-loads` when running `msfconsole`.  Changes average
(n=10) runtime from 52.96 seconds to 38.98 seconds (-26.39%) (-71.92%
compared to 69b170a7dfda8d3fd971c0c591e0a1eb1cb4922b).
"Without --yaml or MSF_DATABASE_CONFIG, ~/.msf4/database.yml wins" --execute-command

MSP-11671

Run `msfconsole` with `--execute-command exit` instead of interactively
and typing exit.  Average (n=10) runtime changes from 138.91 seconds to
51.79 seconds (-62.72%). Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"Without --yaml or MSF_DATABASE_CONFIG, ~/.msf4/database.yml wins" --defer-module-loads

MSP-11671

Pass `--defer-module-loads` to `msfconsole` to change average (n=10)
runtime for `/usr/bin/time rake CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:88 cucumber:boot` from
51.79 seconds to 39.25 seconds (-24.40%). (-71.74% from
e9a69a844cd2f2f7ad24386dd3adf7ccbd18d2b3.) Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
`Without --yaml, MSF_DATABASE_CONFIG or ~/.msf4/database.yml, project "database.yml" wins` --execute-command

MSP-11671

Run msfconsole with `--execute-command exit` instead of running
interactly and typing `exit`.  Changes average (n=10) running time for
`/usr/bin/time rake CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:115 cucumber:boot` from 139.76
seconds to 51.42 seconds (-63.21%).
`Without --yaml, MSF_DATABASE_CONFIG or ~/.msf4/database.yml, project "database.yml" wins` --defer-module-loads

MSP-11671

Run `msfconsole` with `--defer-module-loads` to change average (n=10)
runtime of `/usr/bin/time rake CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:115 cucumber:boot` from
51.42 seconds to 37.76 seconds (-26.57%).  (Change of -72.98% since
f950f3094de718f5294a84fb7e0a78390818ba4d.)  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"no database connection" --execute-command

MSP-11671

Call `msfconsole` with `--execute-command db_status --execute_command
exit` instead of running interactively and typing `db_status` and `exit`
to change the average (n=10) run time of `/usr/bin/time rake
CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:134 cucumber:boot` from 195.38
seconds to 49.44 seconds (-74.70%).
"no database connection" --defer-module-loads

MSP-11671

Call `msfconsole` with `--defer-module-loads` to change runtime of
`/usr/bin/time rake CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:134 cucumber:boot` from
49.44 seconds to 37.65 seconds (-23.83%). (-80.73% change from
22c56f525335d45623c7708ccc53561e516ae8a0.)  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"Starting `msfconsole` with a valid database.yml" --execute-command

MSP-11671

Run `msfconsole` with `--execute-command db_status --execute-command
exit` instead of running interactively and typing `db_status` and `exit`
to change the average (n=10) running time of `/usr/bin/time rake
CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:150 cucumber:boot` from
196.30 seconds to 57.02 seconds (-70.95%).  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
"Starting `msfconsole` with a valid database.yml" --defer-module-loads

MSP-11671

Run `msfconsole` with `--defer-module-loads` to change average (n=10)
runtime of `/usr/bin/time rake CUCUMBER_OPTS="-r features"
FEATURE=features/msfconsole/database_yml.feature:150 cucumber:boot` from 57.02
seconds to 38.76 seconds (-32.03%).  (-80.26% change from
288d77f31a14f4d05c7f665c2f8bbfd0c58e8d4d.) Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing.
Don't require simplecov in cucumber env.rb

MSP-11671

All features currently use aruba to run msfconsole in a separate process
and it is that child process that needs to load simplecov.  Changes
average runtime for `rake cucumber:boot` from (n=10) 122.21 seconds to
(n=13) 112.50 seconds (-7.50%).  Raw data:
https://docs.google.com/spreadsheets/d/1vCRi_38Go3Wfq670eDCXMTSSXL1blSbk6NQsgpOqfYw/edit?usp=sharing