Reworking a large portion of heightmap code

Signed-off-by: Paul Holden <paulholden2@gmail.com>

- Reworked and fixed roughness function, was calculating wrong row
  index (Y-coord of patch). Now properly checks average elevation
  difference between edges and corners. Differs slightly from technique
  being implemented here, but for now it provides an accurate enough
  roughness factor for patches.

- Added new functions for adding indices to the heightmap buffer. In an
  ideal implementation this index buffer would not be attached to the
  heightmap; the heightmap mesh would be generated in real-time based on
  viewer distance, point, etc. and fill the contents of an index buffer
  object that provides a generic interface, but can use orphan, persistent
  mapped buffers, etc. Might be preferable to have an object that can
  append variable numbers of elements with a single function call since a
  patch will be drawn by no fewer than 6 (corners, complete fan, restart
  index) and no greater than 11 (center, corners, edges, complete fan,
  restart index).

- Added a refinement matrix to the heightmap struct. Stores refinement
  information for patches (stored at what would be the ostensible center
  of the patch) in a matrix.

- Add a Y buffer that stores elevation data points; removes the need for
  the hmap_point() function. hmap_roughness() was extremely slow since it
  made so many calls to hmap_point() to calculate average elevations and
  such. hmap_roughness() can still be improved by storing patch roughness
  information in a matrix similar to the refinement matrix.

- Added a smaller heightmap patch to test things on a scale a little more
  friendly on the eyes and thought process.

- Add function to calculate sibling patch indices, and associated enum
  values for which patch to calculate. Added an error code
  HMAP_PATCH_OUT_OF_BOUNDS for patches that are on an edge or corner.

- Adjusted heightmap shader to use the new, smaller heightmap that wasn't
  generated with specific scaling values in mind for each of the RGB
  channels.