Fix `search text`

MSP-8986

`search text` would throw an exception and cause msfconsole to print a
stack trace because `Metasploit::Model::Search::Operation.parse` was
parsing the formatted_value as nil instead of ''.  Once that was fixed,
the problem was union operations weren't validating their children
recursively.  Once that was fixed, the problem was validation errors
weren't being indented for the depth, so it was hard to read.
Fix architecture.bits tab completion

MSP-8986

architectures.bits tab completion failed because it was trying to shell
escape `nil`, which came from the architectures that don't have bits,
like Ruby and Python.  Exclude returning NULL values for tab completion
since the search syntax can't differentiate between blank '' and an
actual nil since it's all '' when parsed.
Fix architectures operators

MSP-8986

The set operators for architectures raised an exception when no value
was given instead of showing a validation error because
`Metasploit::Model::Architecture::ClassMethods#set`, which is used to
find to find and display the set of allowed values was including the
`nil` value for bits, endianness, and family and nil cannot sort with
other types.  The `nil`s were removed in metasploit-model
0.19.3.tab-completion.
Convert plucked values to strings before shell escaping

MSP-8986

privileged is a boolean column, so it returns `false` and `true`, but
Shellwords.escape does not automatically convert `false` and `true` to
String, so it errors.  Fix the error by explicitly casting with to_s
before escaping.
Quote table and column names for tab completion pluck

MSP-8986

Past!Luke tried to be sloppy and not use the table and column quoting when
inlining the AREL to SQL for attributes.  Without quoting any usage of
the references table throws a PG Error because REFERENCES is a reserved
word in PG as part of the foreign key constraint syntax.
Fix nil operator in specs heisenbug

MSP-8986

Typo in one of the operator names could cause the operator by name look
up to fail.  Added an example to check that all the operator_names are
valid to prevent this in the future.
Fix #paired_real_path_sha1_hex_digests

MSP-8986

Due to stubbing without regard to the actual payload_type and the fact
that generating the metasploit_module involves generating a module_class
and module_ancestors for it, the number of module ancestors for a given
payload_type was variable.  Change the lets to remove the stub and
properly take into account the module ancestors generated by the module
class factory.

(cherry picked from commit c71de70)
Merge branch 'bug/cmd_search' into feature/parallel_test