Add globals.h (ERROR macro), parser.(c, h).

Add:
	src/globals.h
		-add globals.h file to contain macros universally applicable to the
		graphics engine
		-add ERROR() macro, used to print either a plain string, or formatted
		string, error message with filename and line-number metadata.

	src/parser.(c, h)
		-add files that will form the backbone of the graphics engine's
		parsing utility.
		-add readScriptFile(), freeScript(), Script_t struct.
Fin script parsing; add scripts/; mod matrix.*

Add:
	src/parser.c
		-complete, and test script-file parsing
		-add evaluateScript(), evaluateCommand(), and argsRequired();
		evaluateCommand() should map nicely onto an interactive shell
		implementation.

	src/parser.h
		-add Script_t definition, though that'll likely move back to
		parser.c.

	src/matrix.c
		-remove static specifier from createIdentity(), as the function's now
		called by parser.c and isn't matric.c-specific.

	src/matrix.h
		-add Matrix_t definition, though, as with the Script_t definition in
		parser.h, that's also likely to change once all testing finishes.

	scripts/
		-add directory to contain all script files.
Add screen-saving, rm engine.h, add to gitignore.

Add:
	src/screen.c
		-add writeScreen(), which writes the current SDL_Surface to a file.

	src/parser.c
		-add documentation comments before every function header
		-add ability to save current SDL screen to file from a script.

	src/(engine, globals).h
		-move the only declarations in engine.h, MAP_HEIGHT and MAP_WIDTH
		macros, to the globals header, and remove engine.h (engine.h was being
		used as a globals file, which is better conveyed by a file called
		globals.h).

	.gitignore
		-add *.bmp files
Rename sig_handler(), add command-line argument.

Add:
	src/engine.c
		-if any command-line arguments are given, the graphics_engine interprets
		the first as the path/filename of a script file, and will (attempt to)
		evaluate it.
		-otherwise, it'll run a hard-coded test*() function (currently
		testMatrix()).

	src/utils.c
		-rename sig_handler() to sigHandler(), to conform to camel- over
		snake-case.

	scripts/scripts.gsc
		-finalize script contents, add a command to write the final screen to
		a file; insert some newlines/comment out several commands, to
		demonstrate parsing robustness.

	src/parser.c
		-now ignores lines beginning with both newlines and comment chars.
Make all includes absolute; add interpreter/.

Add:
	src/(engine, matrix, screen, utils).c
		-make paths of all local #includes absolute, as opposed to relative (eg,
		"src/matrix.h", instead of "matrix.h", which is implicitly equivalent to
		the former), because when files in a directory other than src/, like
		src/interpreter/, include an src/ header file, they must declare its
		absolute path (eg "src/matrix.h"). Thus, mod all paths for consistency.

	src/interpreter
		-add interpreter directory, to contain all files pertaining to
		interpretation of user commands, whether via a script file or
		interactive shell.

	src/(parser -> interpreter/(file_parser, interpreter)).c
		-increase modularity by partitioning parser.c into two files,
		interpreter/file_parser.c and interpreter/interpreter.c; the former
		handles script file input while the latter contains functions for
		evaluating a command string, which will be used by the shell as well.
Add shell, graphics, keyboard/xterm libs.

Add:
	State: barely functional.

	src/interpreter/shell.(c, h)
		-add main shell files; currently contain only one function, shell(), to
		be partitioned into multiple components once proper functionality is attained.

	src/shell_graphics.(c, h)
		-module to handle shell graphics via terminal rendering libraries.

	lib/(keyboard/, xterm_control/)
		-add keyboard/ and xterm_control/ libs, for keyboard input handling and
		terminal graphics respectively; to be replaced by more sophisticated
		frameworks later on.
Further develop shell, shell_graphics.

Add:
	src/interpreter/interpreter.c
		-add 'e' command, to exit the graphics-engine; mainly only useful in the
		shell.

	src/interpreter/shell.c
		-convert most metadata variables inside shell() -- curX, curY,
		enteringCommand, to global counterparts for easier access by shell.c
		helper functions and shell_graphics.c functions.

	src/interpreter/shell_graphics.c
		-add function to clearScreen(); reposition cursor after the shell is
		rendered.
Heavily refactor shell.c.

Ref:
	src/shell.c
		-move components of shell() into individual static functions, for
		greater code modularity.
		-remove g_virtualChanged, in favor of a conditional checking the value
		of g_virtualY (originally -1, which is nonsensical in terms of
		scrolling), to determine whether the use has or hasn't scrolled yet.
		-make Matrix_t *s global variables.
Add lateral shell movement; decrease screen DELAY.

Add:
	src/screen.h
		-decrease QUIT_DELAY time, from 2000 to 400, with the logic that if
		a pause before the window quits is required an explicit (u)sleep() call
		will be made.

	src/interpreter/shell.h
		-add lateral movement across the command line
		-mod insertChar() and deleteChar() to slide forward/backward
		respectively the string following the cursor position, to account for
		the ability to move one's cursor.

Fix:
	src/interpreter/interpreter.c
		-sscanf() return value was misinterpreted (EOF is sent only in the case
		of a premature exit)-- fix value checking to ensure that all necessary
		values are properly scanned in from an arguments string.
Add line-scrolling, shell prompt, gnome-terminal.

Add:
	makefile
		-"make run" now executes bin/engine in a standalone gnome-terminal.
		-add SHELL_TERMINAL variable, containing the flags used to initialize
		gnome-terminal with a name, proper dimensions, etc..

	src/interpreter/shell.c
		-add functional scrolling through command-line history.

	src/interactive_shell/shell_graphics.c
		-add "> " prompt to shell.