Add diffuse shading.

Add:
	src/graphics/graphics.c
		-Add `flatShade()`, which currently only implements diffuse shading.
		-Restructure `drawLine()` a bit (replace if-else assignment conditionals
		with ternary operators).
Add ambient/specular lighting.

Add:
	src/graphics/graphics.(c, h)
		-Add `ambientLight()` and `specularLight()`.
		-Update `flatShade()` to return the sum of the above two
		functions and `diffuseLight()`.
Aggregate three light functions into one.

Add:
	src/graphics/graphics.c
		-Aggregate `ambientLight()`, `diffuseLight()`, and
		`specularLight()` into a single function `flatShade()`.
Add Light_t struct; use it in `flatShade()`.

Add:
	src/graphics/graphics.h
		-Introduce a typedef'd struct, `Light_t`, to represent
		point-lights.
		-Add its use to `flatShade()`.
Add makefile debug, valgrind suppressions file.

Add:
	valgrind.supp
		-Add a Valgrind suppressions file, to silence any memory leaks
		detected in the SDL and system libraries.

	makefile
		-Add target `debug`, to compile the engine with flags aimed at
		providing the most debugging information possible.
Fix GCC optimization-level bug.

Fix:
	src/graphics/screen.c
		-When compiled under anything but `-Ofast`, the engine's SDL
		screen would refuse to display anything; the bug was tracked
		down to `ZBuffer_t` code introduced to `screen.c` in 62cf154.
		`memset` was being used -- incorrectly -- to set
		`g_zbuffer->buf` values.
		-Reimplement `clearZBuffer()` with a generic for-loop that sets
		the values "manually."
Work on averaging adjacent surface normals.

Add:
	src/graphics/matrix.(c, h)
		-Add code to `drawMatrix()` to find the average of the surface
		normals of all triangles adjacent to another given triangle.

	src/graphics/graphics.(c, h)
		-Add `intToRgb()`; redefined `flatShade()` with `Light_t *`,
		instead of `Point_t *`, parameters.
Add `drawHorizontalGradientLine()`.

Add:
	src/graphics/graphics.(c, h)
		-Add `drawHorizontalGradientLine()`, which draws a horizontal
		line with a color gradient, and is integral to the Goraud
		shading algorithm.
Add `drawHalfTriangle()`.

Add:
	src/graphics/graphics.c
		-Add `drawHalfTriangle()`, to cut down on repetitive code in
		`scanlineRender()` (which essentially repeated the half-triangle
		algorithm twice).
Add partly functional Goraud shading.

Add:
	src/graphics/graphics.c
		-Add `INTERPOLATE_COLOR()` macro, used throughout Goraud
		shading; implement the Goraud algorithm fully in `flatShade()`,
		which now calls `drawHorizontalGradientLine()` with interpolated
		endpoint lights.
Merge branch 'flat_shading' of github.com:sevko/graphics-engine into flat_shading

Conflicts:
	src/graphics/graphics.c

Reverted the engine to c13967e and forgot to push before committing 8a80985.
Refine Goraud shading; use averaged surface norms.

Add:
	src/graphics/graphics.(c, h)
		-Rewrite and update some documentation to reflect new argument
		names/functionality.
		-Account for the case where `Light_t *` arguments passed to
		`drawHorizontalGradientLine()` are not necessarily in
		left-to-right order along the x-axis.

	src/graphics/matrix.c
		-Use `avgNorms` normals in `drawMatrix()`, instead of the
		surface normal to the triangle (used when testing).
Merge branch 'flat_shading' into light_and_shading

Implement flat shading, and some elements of Goraud shading.