Added support for child identifier to be any non-pid term.

Previously only atoms were allowed.
Created ydb_planner module.

Defined initial structure for how queries are processed. The
intermediate nodes are able to listen to either (1) an input stream,
or (2) another intermediate node.

Each intermediate node in a query is identified by a tuple consisting
its type, and the number of a similar type before it, e.g. {select, 0}.
Not completely sure how this will work when attempting to introduce
joins to the planner and need to keep the child identifiers unique.
On second thought, should be fine so long as pass the resulting history
dict from the first call to the second.

Attempted to define representation of select node.
Defined project node structure in ydb_planner module.
Defined file output node structure in ydb_planner module.
Defined socket output node structure in ydb_planner module.
Changed overall query specification.

Takes a tuple of the form {input_stream, query(), pid()}.
Defined function to dynamically register queries.
Refactored how plan node adds itself as a listener.

Added support for listen option to contain a list of functions that
resolve to a pid. This is necessary in order to integrate with the
supervisor hierarchy because the pids of the previous plan nodes are
not necessarily constant.

The function acts as a closure to retrieve the pid of an intermediate
node with a specified name from the query.

Because the plan node process would reach deadlock if attempted to
call this function, since it calls to supervisor:which_children/1.
Thus, the plan node defers the act of computing the schema until after
it has finished initializing (when its supervisor would actually be
able to respond). Note that because the message is sent to itself
during init/1, it is guaranteed to be the first message in its mailbox
post-initialization, so no race conditions exist of say the next plan
node requesting the schema from the current one.
Added support for listening to pid via registered name.
Merge branch 'planner'