WIP: Add screenshot and recording capabilities

- Code added to save frames and screens via keypress. Not ready, needs
  further testing, documentation and code cleanup
Add local-configure and convert.sh scripts

- Not to be included in the final build; these are scripts the developer
  uses locally. Eventually, these files will be removed.
First draft component model

- Heavy work-in-progress
- Add wp_component class and operations
- Update record logic to utilize new wp_component class
- It's a mess
WIP - Component model changes

wp_scene.w:
- Add wp_ctype_dummy to wp_component_type enum
- Add free_components function to wp_scene_ops struct
- Remove wp_scene_on_pre_render and wp_scene_on_second functions
- Add initialization loop to components (id = -1). This is ugly
- Update wp_scene_on_start_record event to utilize new component model
  and update logic. The intention is to ensure a component (i.e., the
  record icon) is activated during the correct update loop notification
  cycle, and that the component is added to the list of components
  available to the scene
- Add wp_scene_free_components function to tie to the free_components
  function pointer in wp_scene_ops. This iterates the list of added
  components and performs any clean up work required (i.e., freeing
  textures and surfaces)

wp_tegen.w:
- Remove ops->free logic from the wp_tegen_dtor function; this free
  semantically belongs in the wp_tegen_free function
- Add aforementioned ops->free logic to the wp_tegen_free function. The
  wp_tegen.ops member is heap-allocated during initialization;
  "overloaded" functions are handled during init. This will change from
  a heap-allocation to a stack allocation in the next commit
- Add free logic to the shutdown function. This will be removed in the
  next commit
- Remove empty_component static from wp_tegen_main_loop, as well as loop
  logic used to initialize the components
- Add free_components call to clean up any utilizes components during
  the application lifecycle
WIP - Class Model Preparation

- This is an extension of the component model and mostly concerns the
  wp_tegen and wp_scene classes.

wp_memory.w:
tegen.w:
- Remove wp_char_t from wp_memory.w and move it to tegen.w; it's used
  later

.gitignore:
- This adds upcoming files to the .gitignore file
WIP - Class Model: Pre-update commit

- This simply adds the wp_types.w module to the repository. It has not
  yet been integrated.
WIP - Class Model: Integration

wp_types.w:
- Add wp_types.w module which adds OO-like programming constructs in
  plain C. This is a learning experience. Not all objects will utilize
  the OO features included in this module.

wp_scene.w:
wp_tegen.w:
- Update wp_scene and wp_tegen objects to inherit from WPClass and
  WPObject, aspects of the wp_types module. wp_tegen inherits from
  wp_scene.
- Not all OO features are tied up, yet. This includes some broken logic,
  such as destruction and finalization. To be worked out.

Makefile.am:
- Add wp_types and wp_type_tests.c to the build process
WIP - Class Model Cleanup and Bootstrap

wp_types.w:
- Update copyright header
- Move @d definitions near the tope of the file for clarity
- Remove extern from WPObject and WPClass declarations; they're defined
  in the source file
- Add bootstrap function: Iterate provided list of parameters, calling
  each parameter provided in the order it's provided. This allows us to
  serialize some on-start features, such as class and object models,
  before use by modules. Bootstrapping happens before anything else
- Add "release" semantics to wp_types_shutdown function
- Move misc. declarations closer to their definitions

wp_tegen.w:
- Clarify module definition (bootstrap vs. initialize)
- Add wp_tegen_bootstrap function
  - Initialize type system (see wp_types.w)
  - Initialize wp_tegen_class and wp_tegen_object as ordered by the
    bootstrap function
  - Release boostrapped objects in object destructor function
- Initialize graphics field to NULL. Fixes valgrind error related to
  uninitialized values
- Correct wp_tegen_get_instance which, in the previous version, was not
  correctly setting the static stack object to the newly allocated heap
  object. Fixes wp_finalize assertion for the base type
- Rationalize module startup and bootstrap functions. May need to rename
  wp_memory_startup to wp_memory_bootstrap to match the "new" model

wp_scene.w:
- Add wp_scene_class_bootstrap function
- Add wp_scene_class_release function
- Move wp_malloc_of for wp_scene_class and wp_scene_object into boostrap
  code block (wp_scene_class_bootstrap)
- Initialize object state to NULL (o->state = NULL)

tegen.w:
- Call wp_tegen_bootstrap() prior to all other tegen functions
- Add braces around wp_finalize function call
Merge branch 'wp-record-component'