Create a parser for Arrays, and wire up decode to use it for 1d arrays.

The parser is heavily lifted from the Go JSON parser, with various
tweaks for the PG array syntax (mainly around unquoted strings). It
can handle string, int, float, and bool arrays. The parser has support
for multidimensional array parsing, but this feature hasn't been wired
up to the decoder yet. To do this may require some further changes to
pq.

Currently only supports unmarshaling of data. Marshaling/using arrays
as input parameters can be worked around by using string formatting.
Better NULL handling for unquoted values.

Previously would fall into a null handling mode whenever it encounted a
uppercase N; this was an error if there happened to be an unquoted
string starting with N.
prepare to merge
Merge branch 'array'

Conflicts:
	encode_test.go
support text[]
test case for known limitation and expected error: slice type cannot be converted if used directly by db.Exec/Query/QueryRow