Implement 'SELECT' clause construction.

Implmented 90% of the 'SELECT' clause. Simple 'SELECT' statements can be
constructed and were tested. The API for creating 'SELECT' statements is
still experimental and subject to drastic changes.
Implement different between clauses and statements.

Clauses are all SQL objects that are combined into a statement. A
statement is compilable into a SQL string ready for parameter binding
and execution. For example, 'INSERT', 'UPDATE', 'DELETE', and 'SELECT'
are statements and everything else is a clause.
Implement coherent mechanism for aliases and column names.

Lists of columns and values are now handled by an array where the
elements are either the alias, named parameter, or column name. This
paradigm is used for insert values, select result columns, and update
set columns.
Fix named parameter key generation.

The automatic named parameter key generation for indexed parameters, or
parameters without explicit names, would replace the key for a Param
after a compile was conducted. This would result in a memory effect
where the named parameter assigned to the parameter during the compile
would be used as the new key for the parameter even after compiling. The
problem would be multiple named parameters with the same parameter name
if multiple compiles were conducted or if the parameter was used in more
than one statement.

A temporary key is created and used for the compiled statement, but the
key is not changed for the parameter. The key for an indexed parameter,
'?', should be the same before and after compiling using the 'toString'
function. This was not the case before the fix.
Fix usage of Spengler in Egon helper function.

Converted passing of object literals for some functions to passing of
arrays to use the new Spengler paradigm.
Add select helper function to Table prototype.
Update documentation.
Add SQL string builder module.

Started moving SQL string building from Spengler module to separate
module. The Spengler module is a SQL expression language, and it is an
abstract from 'raw' SQL construction. However, the SQL string building
functionality was originally included in Spengler and this is very
low-level functionality without much abstraction. The SQL string
building functionality maybe desired without the overhead of the SQL
expression language or a different SQL string building module might be
used. The Spengler module still needs to implement a mechanism for using
alterative SQL string building modules, but this is in the future.

The Egon module will be built on top of the Spengler module which will
be built on top of the SQL string building module. For now, the SQL
string building module is simply named 'SQL'. A less generic and more
unqiue name will be needed in the future.
Add documentation for clauses.
Implement individual clause creation

All clauses can be created independent of the chain and added either
through function chaining or in constructors. Almost every SQL string is
now a clause.

Type checking of arguments and optional arguments have been created. The
type checking currently does not throw an exception, as an
IllegalArgument exception still needs to be implemented.

Different types of join sources are now possible. Table, Source, and
Select join sources can be created. A Table source is created
automatically if a string is used for the join source.

Added additional documentation.
Add throw Type and Syntax errors on invalid SQL string construction

Errors are now throw when constructing a SQL string if the operation
would yield an invalid SQL statement or clause. This aids in
constructing valid SQL strings but allows for flexibility in
construction.
Add documentation
Format to JSLint coding standard
Fix tree and node generation
Refactor nodes to tree function and tree property to nodes property

The nodes are internal, and creating a 'tree' makes more sense that
getting 'nodes'. The nodes are an array of strings and clauses but only
for the parent clause. The tree function gets all nodes in the proper
order for the clause including the child clauses.
Refactor to use spaces instead of tabs for indentation
Refactor white space and formatting for Ramis