Fix bug for array handling when prepared

Consider  the following sample,now the array size of retVal returned by Npgsql is 0 which 2 is expected . 
The patch fix the problem,and modified some cases.

            using (NpgsqlCommand cmd = new NpgsqlCommand("select :p1", TheConnection))
            {

                NpgsqlParameter parameter = new NpgsqlParameter("p1", NpgsqlDbType.Double | NpgsqlDbType.Array);
                parameter.Value = new Double[] {1.2d, 1.3d};
                 cmd.Parameters.Add(parameter);
                 
                cmd.Prepare();
                Double[] retVal = (Double[])cmd.ExecuteScalar();
                Assert.AreEqual(2, retVal.Length);//failed,the retVal.Length is 0
            }