elements: Added PGCompositeElement class

inspired by
https://groups.google.com/d/msg/sqlalchemy/f9BPVHfdvbg/M88ruLo6lzQJ
types: Added PGCompositeType class

inspired by
https://groups.google.com/d/msg/sqlalchemy/f9BPVHfdvbg/M88ruLo6lzQJ
elements: Changed PGCompositeElement to FunctionElement

Changing this to a function element fixes the missing FROM clause when
used in a select query.
test_types: Fixed ST_Dump() test
test_functional: Added first set of ST_Dump() tests
PGCompositeElement: Don't assign key attribute
Comparator: Set key attribute to None

This prevents the following error:

AttributeError: Neither 'PGCompositeElement' object nor 'Comparator'
object has an attribute 'key'
test_functional: Added ORM style test for ST_Dump()
types: Added GeometryDump type

This type can be used as the return type for the ST_Dump() function
functions: Added ST_Dump() function
elements, types: Renamed PGComposite* to Composite*
tests: Removed unnecessary type_ parameter from ST_Dump() calls

type_=GeometryDump is the default now for ST_Dump()
test_functional: Improved ST_Dump() result tests
functions: Added ST_DumpPoints() function
Merge branch 'master' into st-dump
TravisCI: Enabled raster support
types: Added basic Raster type
test_functional: Added Ocean table

Make sure there are no errors when using the Raster type on PostGIS 2.x
__init__: Create indices for raster columns
Merge remote-tracking branch 'origin/master' into raster

Conflicts:
	.travis.yml