HDF5_recorder: Provides the new HDF5EnumeratedArrayRecorder, which stores every result in a group with numbered entried in increasing order. Retrieval yields the most recent one or an exception if it does not exist. Switched all __call__ methods to __setitem__ as the recorders are behaving more like dictionaries it would be better to remain consistent with that interface. Tweaked generate_HDF5_array_recorder so as to allow selection of different types of recorders. Tweaked static_subgrouping_array_recorders, which decorates a given callable, so that on each call it refreshes the recorder before running the callable.
generic_decorators: Added the decorators metaclass and metaclasses. Both apply a metaclass(es) to a class given and replace it by an updated result.
generic_decorators: Added the decorator class_static_variables, which uses a metaclass to add static variable to a class provided.
generic_decorators: Added class_decorate_all_methods, which will decorate all class methods of a given class with the given decorators.
generic_decorators: Added class_decorate_methods, which decorates selected methods that are specifed. If the method does not exist, it fails silently.
HDF5_recorder: Added class_static_subgrouping_array_recorders and class_static_array_debug_recorder. These decorate a whole class so that all members have access to a recorder that is instance dependent. The recorder can be used in exactly the same way it was for a function. Except, to initialize a new recorder, it must simply be assigned to the class static variable. The rest of the work is done in the background.
This is the culmination of work required to address #75.
advanced_image_processing: Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.
nanshe_learner: Modified construction of resume_logger and array_debug_recorder to follow new constraints from HDF5_recorder. Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.
wavelet_transform: Updates to use ArrayRecorder dictionary style of storage. Also, removed the array_debug_recorder from parameters and added a decorator instead, which provides access to the array_debug_recorder through a static variable. Configures functions beneath it to use an array_debug_recorder of the same kind in a subgroup.
HDF5_recorder: Added code to HDF5EnumeratedArrayRecorder to set an attribute for each group key to specify whether it is a logger or data. Allows persistence across different Python sessions or different logger instances.