Deprecate SQL::WindowFunction and SQL::EmulatedFunction classes, switch to using options on SQL::Function

This consolidates the 3 SQL function expression classes that Sequel
has into a single SQL::Function class, by adding support for
an options hash to SQL::Function.  This options hash now handles
window functions and emulated functions, and it also handles
aggregate functions using DISTINCT as well as count(*), which
previously used literal SQL arguments.  I plan to expand the use
of the options hash in the future to support more kinds of
SQL function calls.

Unfortunately, the API for SQL::Function#initialize does not allow
for an options hash, so add an SQL::Function.new! method to create
functions with options, and an SQL::Function#with_opts private method
that returns a new Function with merged opts.

Add SQL::EmulatedFunction.new and SQL::WindowFunction.new methods
that return SQL::Function objects, with deprecation warnings. Just
in case users are still creating and working with such objects (e.g.
by using allocate instead of new), keep around the the literalization
methods for the classes, also deprecated.

Add Dataset#emulate_function? private method to determine if a
function call needs full emulation, and add a new
emulate_function_sql_append private method for handling such
emulation.  Continue to allow use of the EMULATED_FUNCTION_MAP
constant for simple emulation of function names.

This has minor changes to the to_dot representation of SQL::Function
objects.
Add SQL::Function#quoted and #unquoted methods, to enable/disable quoting of function names

Previously, using an SQL::Identifier or SQL::QualifiedIdentifier
always quoted the function name if the database supports quoted
function names, and using a Symbol or a String never quoted the
function name even if the database supports quoted function names.

These methods allow you to override Sequel's default behavior,
so you can choose not to quote function names when using
SQL::Identifier and SQL::QualifiedIdentifier function names,
or choose to quote function names when using String or Symbol
function names.
Add SQL::Function#lateral, for creating set returning functions that will be preceded by LATERAL

Previously, Sequel only supported LATERAL on datasets.  This
extends support to LATERAL on set returning functions.
Add SQL::Function#within_group for creating ordered-set and hypothetical-set aggregate functions
Add SQL::Function#filter for creating filtered aggregate function calls
Add SQL::Function#with_ordinality for creating set returning functions WITH ORDINALITY