Add Sequel.core_extensions? for checking if the core extensions are enabled

The core extensions are still enabled by default, and will always
be enabled by default in 3.x, but this allows code elsewhere to
check and see if they are supported.
Make sure Sequel::LiteralString is not missing methods if the core extensions are disabled

These methods/modules are only defined/included in String if the
core extensions are enabled.  If they are not enabled, these
methods/modules would be missing from LiteralString, which was
not intended.

Handle this by checking if the core extensions are disabled
and manually defining/including the methods/modules for
Sequel::LiteralString.

No automated tests for this code, as we don't have a test suite
that runs with the core extensions disabled.
All of Sequel's core extensions now have equivalent methods defined on the Sequel module

While the core extensions that Sequel does add by default are fairly
minor compared to other popular ruby database libraries, and are
specifically related to Sequel's DSL, it would be best if Sequel
were more usable with the core extensions disabled.  This commit
is a step towards making Sequel easy to use without the core
extensions.

This adds equivalent methods for all of the core extensions to
the Sequel module.  For example:

  :a.identifier      -> Sequel.identifier(:a)
  :a.qualify(:b)     -> Sequel.qualify(:b, :a)
  :a.sql_function(2) -> Sequel.function(:a, 2)
  {:a=>1}.case(2)    -> Sequel.case({:a=>1}, 2)

In addition, a Sequel.expr method has been added that acts as a
replacement for the sql_expr extension:

  1.sql_expr    -> Sequel.expr(1)

While using the methods defined on the main Sequel module are is
a bit more verbose than using the core extensions, it's still
reasonably concise, and much better than the previous alternative
of trying to create the objects manually.

For easy use of these builder methods in external code, they are
contained in two modules, Sequel::SQL::Builders (most methods) and
Sequel::SQL::OperatorBuilders (operators like +, &, ~).
Array#all_two_pairs? is now deprecated and will be removed after 3.34.0 is released

Refactor core_sql.rb to use the core extension replacements methods
for most Array methods.  As Array#all_two_pairs? is not related
to SQL generation, it's not something Sequel should define.
Refactor sql_expr extension to use Sequel.expr
Expand virtual rows to support operators and literal strings

VirtualRows can now use operator methods such as +, -, *, /, &, |,
~, >, <, >=, and <= to create numeric and boolean expressions.
These operators should be used in prefix form:

  where{|o| o.-(1, :a)}
  where{|o| o.>(1, :a)}
  where{|o| o.&({:a=>1}, :b)}

Additionally, they now support the ` (backtick) operator for
creating literal strings.  The use of ` to run system commands and
get output exists in Kernel, and since VirtualRow subclasses
BasicObject, the method never worked in virtual rows.

This should be fully backwards compatible except in the case where
people were using these methods to create identifiers or functions.
That seems like a very unlikely use case to me.
Move some specs out of core_sql_spec.rb
The core extensions have now been made a real Sequel extension (still loaded by default)

This moves the core_sql.rb file into a real extension that is loaded
by Sequel.extension.  For backwards compatibility, this extension is
still loaded by default.
You can now require 'sequel/no_core_ext' to load Sequel without the core extensions

This makes it easier to use Sequel without the core extensions,
since you don't have a set a constant/environment variable before
loading them.