Add RGB_t, RGB functions, skeleton flatShade().

Function declarations/definitions and calls, and variables were modified to use
`RGB_t`.

Add:
	src/graphics/matrix.(c, h)
		-Add `RGB_t` typedef, and `RGB()` macro to create `RGB_t *`s.
		-Add skeleton `flatShade()`.
Generalize dotProduct(), add GET_HORIZONTAL_POINT().

Add:
	src/graphics/matrix.c
		-Generalize `dotProduct()` to accept two `Point_t *` parameters.
		-Add `GET_HORIZONTAL_POINT()`, to ease use of `dotProduct()` in
		`multiplyMatrix()`.
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.
Partly redefine flatShade() with RGB_t.

Add:
	src/graphics/graphics.c
		-Redefine parts of `flatShade()` to deal in `RGB_t *`, instead
		of RGB colors in integer (0xAABBCC) format.
More work on Goraud shading in `drawMatrix()`.

Add:
	src/graphics/matrix.(c, h)
		-Reimplement `drawMatrix()`, because surface normals still
		aren't being averaged properly.
		-Fix `SUB_POINT()`, which was subtracting `z` coordinates for
		the difference `w` coordinates.
Add inverseSlope(), use in scanlineRender().

Add:
	src/graphics/graphics.c
		-Add `inverseSlope()`, to clean up the verbose slope calculation
		statements in `scanlineRender()`.
Revert drawMatrix() to older implementation.

Add:
	src/graphics/matrix.c
		-Clean out any surface-normal averaging code in `drawMatrix()`,
		essentially reverting it to an older version.
Redefine NORMALIZE with expression syntax.

Add:
	src/graphics/matrix.h
		-Redefine `NORMALIZE()` with expression syntax, such that it can
		called in the right-hand side of an assignment statement.