Support INSERT with SELECT

Add support for inserting the result of a query in addition to inserting
literal values.  Update Insert to only append to valueSet when
appropriate.  Update the Postgres dialect to only output "VALUES" as
part of an INSERT statement if values are present (including default
values).  Add tests.

Note:  There is some ambiguity of the user intent when insert is called
without any values.  The user may intend to either insert a row
consisting entirely of default values or they may intend to insert a row
based on a subsequently added SELECT statement.  Although we could defer
resolution until the SELECT statement is added (or not) through either
manipulating the query object from the select method or additional logic
in the dialect, the approach taken in this commit is to use a simple
heuristic:  If the insert includes any columns, it is assumed that a
SELECT will follow, otherwise default values are used.

This commit addresses issue #111.

Signed-off-by: Kevin Locke <klocke@quantpost.com>
Clone Column returned by .value()

Previously, calling .value() would mutate the Column object.  This
causes unexpected behavior when subsequent use of the column carries the
previously set value.  For example:

table.insert(col1.value(1));
table.insert(col1).select(col2).from(table2);

Would cause a syntax error because insert(col1) would be interpreted as
inserting the value 1 into col1 and would not accept an appended select
statement.

This is a change which could break any users depending on this behavior.
Although none of the tests depend on this behavior and the new behavior
seems more reasonable (to me, obviously), there is risk of user
breakage.

Signed-off-by: Kevin Locke <klocke@quantpost.com>
Merge remote-tracking branch 'kevin/for-upstream/insert-select' into V