Changed return value of ydb_plan_node:add_listener/2.

Now returns the schema of child plan node, which can be used later to
compute the schema of the parent plan node.
Defined callback function compute_schema/2.

Takes in a list of input schemas as well as the wrapped
(implementation-specific) part of the plan node state, and produces the
output schema of the plan node.

The state is necessary in cases where the changes made to the schema
depend on arguments given to init/1, e.g. the project specification.
Prepares schema for plan node on its own.

Changed {listen, PlanNode :: pid()} option to
{listen, PlanNodes :: [pid()]}. The plan node will then add itself as
a listener to all of these plan nodes.

The plan node then constructs the schema for this node using the newly
defined compute_schema/2 function.

Amended the contract of the add_listener/2 to show that it returns a
schema, rather than simply the atom 'ok'.
Defined ydb_file_{input,output}:compute_schema/2.

Not support because these modules expect their schemas to have been
defined beforehand as a constant.
Defined ydb_file_output:compute_schema/2.

Expects a single schema and simply returns that schema, otherwise
reports an error.
Defined ydb_socket_output:compute_schema/2.

Expects a single schema and simply returns that schema, otherwise
reports an error.
Changed return value of ydb_branch_node:add_listener/3

Now returns the schema of the child plan node for a specific type,
which can be used later to compute the schema of the parent node.