Don't assume the parameter to execute() is array.

Instead, let's consume the trailing elements as an array.  This is a
behavioral change but it sounds like a reasonable change.  The same
change is made to prepare(), plan.cursor(), and plan.execute().