Remove helper methods for Mdm::Module::Detail associations

[#50752269]

Instead of using these small, wrapper methods, developers should just
use the normal assocation methods.
Add Mdm::Module::Path

[#50752269]

Add a database module for representing module paths so that the install
directory for metasploit-framework, pro, etc can change without the
Mdm::Module::Detail becoming completely invalid.
Remove nilify_blanks dependency

[#50752269]

The nilify_blanks class method from the nilify_blanks gem uses
table_exists?, which requires an active connection, so it does not work
in metasploit-framework, which may not have an active connection, so
don't use the gem and just implement nilify_blanks just for gem and name
for Mdm::Module::Path.
Add missing prescence validator for Mdm::Module::Path#parent_path

[#50752269]

module_paths.parent_path_id was :null => false, but there was no
validator in Ruby to enforce this so SQL errors could have occurred.
Merge branch 'master' into feature/module-caching

Conflicts:
	lib/metasploit_data_models/version.rb
	spec/dummy/db/schema.rb
Work-around JRuby Issue 538

[#50752269]

File.realpath does resolve symlinks in JRuby
(https://github.com/jruby/jruby/issues/538).  To work-around the issue,
wrap compatibility code in MetasploitDataModels::File.realpath.
Spec :null => false columns in Mdm::Module::Action

[#50752269]
module_actions :null => true for required columns

[#50752269]

Enforce :null => false in database for columns that back attributes with
presence validations.
Spec action uniqueness scoped to detail

[#50752269]
Action uniqueness scoped to detail

[#50752269]
Spec :null => false columns for module_archs

[#50752269]
Required columns non-null in module_actions

[#50752269]

Forgot that MetasploitDataModels::ChangeRequiredColumnsToNullFalse
existed, so use that for new ChangeColumnNullInModuleArchs and change
ChangeColumnNullInModuleActions to use it also.  Move deletion of NULL
rows (which had a bug) from ChangeColumnNullInModuleActions to
ChangeRequiredColumnsToNullFalse as its a general requirement to delete
rows in with NULLs before the columns can be made :null => false.
Spec uniqueness of name scoped to detail_id in Mdm::Module::Arch

[#50752269]

Use new shared example 'validates uniqueness scoped to detail_id' to
handle checking validator since shoulda-matchers can't handle that
detail_id has presence validator.
Unique name scoped to detail_id for Mdm::Module::Arch

[#50752269]
Spec column correctness for Mdm::Module::Author

[#50752269]
Column correctness for Mdm::Module::Author

[#50752269]
Spec name uniqueness scoped to detail in Mdm::Module::Author

[#50752269]
Name uniqueness scoped to detail in Mdm::Module::Author

[#50752269]
Mdm::Module::Ancestor and Mdm::Module::Class specs passing

[#50752269]

THIS COMMIT HAS FAILING SPECS.

This commit checks in the work for the past week or so now that the
database model has stabilized, but only Mdm::Module::Ancestor and
Mdm::Module::Class specs are passing.  Mdm::Module::Instance and all its
assocations, which used to be associations of Mdm::Module::Detail need
to be speced or have their specs fixed.
Remove unused Mdm::Module::Class#staged?

[#50752269]