Completely rework and update pattern().

This commit makes the following changes to pattern() and its call in
leo():
1. Since recurse is now set in the leo() call, instead of being a
variable returned by leo_callbacks.data_in(), the pattern buffer is now
a fixed size array for the entire lifetime of leo() and pattern(). This
array is passed in to pattern(), already allocated by leo(), with a size
of recurse+1.
2. Update variable names and declarations within leo() for consistency.
3. Add a code_count parameter, similar to parent_count (previously
depth), for tracking how many bytes of encoded data are in code.
4. Interpret size_data as a number of bits instead of bytes. Previously
looping over each bit was done by multiplying by CHAR_BIT; putting this
responsibility on data_in() increases transparency between abstraction
layers and resolves overflows when

    data_size > 2^(sizeof size_t*CHAR_BIT)-1 / CHAR_BIT

because data_size is multiplied by CHAR_BIT when looping over every bit
in data.
5. Add an abstraction between the data and the terms used to describe
them. This change should allow nested pattern() calls to be used when
describing the positional data in terms of the current position and the
total sample size. For now, terms are looped over and each bit in data
is described in terms of the selected term bits. Note that the special
case in which data is being described in terms of itself has been coded
to not describe any bit in data in terms of the same bit in terms.
6. Resize and manage the *code buffer. Currently it is primitive and
only plans for adding one encoded byte per pattern() call, assuming that
the code will perform depth first pattern analysis, replacing and
registering the last encoded byte as it goes.
7. Fix a bug where previously selected parent bits were not skipped in
recursive calls, because the code checking only broke out of an inner
for loop, instead of continuing the outer loop.
8. Reorganize recursive calls, such that each bit in data is described
in terms of its parents (selected from terms) before recursing and
selecting additional parents.
9. Add commented out psuedocode for the recursive positional pattern()
call, and for calls to fdb_out() and pdb_out() with the encoded data and
UUID.
10. Update and simplify all comments to reflect the changes described
above.