Completely overhaul leo() and project structure.

This commit completely rewrites the leo() prototype and how leo() works.
The following changes have been made:
1. An abstraction layer for pattern storage was created. Instead of
using a file (passed in by FILE *memory), a function pointer is used.
This function may be implemented using a filesystem and FILE * pointers,
or something else (e.g. a networked protocol).
2. The job of keeping track of pattern associations has been delegated
to fdb(), another function pointer, or the frequency database. The
frequency database will record all pattern access and make this
available to leo() when attempting to find related patterns.
3. The three information input and output functions, data_{in,out}()
(formerly simply in() and out()), pdb_{in,out}() (pattern database) and
fdb_{in,out}() (frequency database) have been extensively commented and
defined as members in a callback struct, instead of in the leo()
prototype.
4. void **userdata was added to all six in/out functions, so that
persistent data can easily be stored in a thread safe manner.
5. UUIDs are used to identify patterns. At this time the UUID type is a
placeholder and there is no UUID generation code; this responsibility
will be delegated to system specific UUID functions with the appropriate
system type.

Note pattern(), the static implementation function called from leo(),
has yet to be updated to take advantage of these features. A future
commit should rework and complete pattern().