Made the GDAL driver read elevation data crazy fast.

Changed the logic in createHeightField of the GDAL driver to read a
large chunk of data from the dataset and resample it in memory rather
than sampling each point one by one.  This takes advantage of overviews,
tiled datasets and is just generally more efficient.