Improve error handling and command line arguments

Reorganize and improve constructor call in wp_graphics module:

- Improve documentation
- Add free call to ctor function on init error
- Relocate initalize setter
- free function now returns pointer to self (which should always be
  NULL)
- Remove extraneous Standard Headers section

Remove atexit from wp_memory module:

- No longer registering wp_module_shutdown atexit
- Remove wp_memory_atexit static variable

Remove atexit from wp_test module:

- Module startup functions are no longer called within
  wp_test_execute_tess function
- Remove wp_test_atexit static variable
- Remove atexit registration for wp_test_shutdown
- Update documentation to reflect atexit change

Add error callback mechanism and error methodology to wp_tegen module:

- Initialize module subsystems within wp_tegen_modules_startup (such as
  wp_graphics)
- Remove module shutdown function calls in wp_tegen_modules shutdown
  (atexit); modules will be correctly shutdown in the tegen dtor
- Add error handling concepts:
  - Error Callback: wp_fn_error_callback which may be registered with
    wp_set_error_callback. Tegen errors will call the callback function
  - Add wp_get_error_string function to return a string representing the
    provided wp_error object
  - Add wp_error_severity
  - Add wp_error enum

Improve command line argument handling in tegen main:

- Add --run-tests (-t) command line parameter
  - Tests are still run by default, but this will let us execute tests
    later, once we remove the default behavior
- Add wp_tegen_long_options to wrap the getopt.h struct option with an
  additional description
- Add wp_tegen_options struct to store options
- Update main to reflect new functions for parsing the command line
- Update main to utilize the new wp_tegen_get_instance function
- Update main to utilize a function pointer over a stack-allocated
  instance of the wp_tegen object
- Add function to parse the command line options
  - Use getopt_long to parse command line
- Add function print available command line options
  - Walk the list of configured command line options and print friendly
    messages to the console when an unknown command is provided