Add support for derived column lists to Sequel.as and SQL::AliasMethods#as

Derived column lists are supported in SQL92, and are a way to provide
aliases for columns in a table expression in addition to providing
an alias for the table expression itself.  This makes it easier to
alias the columns when still using a subquery with SELECT * or
SELECT table.* or when using a set returning function.

As this is supported in SQL92 and the majority of databases support
it to some extent, the default is for derived column lists to be
supported.  Attempting to use a derived column list on a database
that doesn't support it will raise an Error instead of issuing the
query to the database.

To use a derived column list, you should provide an array of
identifiers as the second argument to #as:

  Sequel.as(DB[:i], j, [:a, :b])
  # (SELECT * FROM i) AS j(a, b)

  DB.dataset.from{foo(1).as(:j, [:a, :b])}
  # SELECT * FROM foo(1) AS j(a, b)

Previously, you could hack this support in using a literal string
as the argument to #as, but that messes up introspection (such as
implicit qualification when joining).

Because SQL::JoinClause and subclasses separated the table alias
from the table without using an AliasedExpression, they wouldn't
have supported this.  Modify them so that if they contain an
alias, they store an AliasedExpression, allowing them to support
derived column lists.

In order to support derived column lists in Dataset#from_self,
you can now use a :column_aliases option.  Note that this option
is only respected if you also use the :alias option to alias the
table.

Backwards compatibility issues:

Dataset#as_sql_append now accepts two arguments, so external
adapters that override it need to be modified.

Passing both a table and a table_alias when creating instances of
SQL::JoinClause and subclasses is now deprecated.  You need to
pass in an SQL::AliasedExpression instead.

The AST transformer for SQL::JoinClause and subclasses no longer
transforms the table alias.  This is for consistency with
SQL::AliasedExpression, which never transformed the alias.

The to_dot output for JoinClauses is now different if the
JoinClause uses an alias.
Test jsonb bound variables in the postgres adapter specs

These tests originally only tested json, and wouldn't work
directly with jsonb.  However, the only thing they really need
to test is whether they can successfully used in bound variables,
so reduce the scope of the test by eliminating the queries
which depend on json<->text conversion, which leaves a spec
that works for both json and jsonb.
Add support for the PostgreSQL 9.4+ jsonb type to the pg_json_ops extension

This takes the support that previously only existed for the json
type, and extends it to the jsonb type, similar to the changes
made to the pg_json extension.

This does not add support for the new json/jsonb functions or
the new jsonb operators, that will come in a future commit.
Add support for new json/jsonb functions added in PostgreSQL 9.4 to the pg_json_ops extension

This adds support for the json_array_elements_text, json_typeof,
json_torecord, json_torecordset, and the jsonb versions of those
functions.
Add support for the jsonb operators added in PostgreSQL 9.4 to the pg_json_ops extension
Add support for CUBRID/SQLAnywhere emulation to the mock adapter
Set version when using for MySQL/SQLite emulation in the mock adapter

While here, update the emulated versions for PostgreSQL and MSSQL.