Add apl_gradebook module
apl_gradebook: Add apl_savebook method

Use to save the encrypted contents of a gradebook to disk
apl_gradebook: Add apl_openbook function

Open a gradebook from disk
Add apl_entry module

Gradebook entries consist of a name and a score (points earned out of max)
The points values can be stored as integral values or floating-point
values.
apl_gradebook: Add entry list ptr

Will point to an array of entries. These will probably be sorted
by time created, just to keep it simple. To display different sortings,
we'll likely just create index arrays which represent different
sortings (ascending/descending score, date created, etc.)
apl_gradebook: Add apl_closebook skeleton func

Free gradebook memory & resources.
apl_entry: Combine ENTRY_*_INT/FLOAT symbols

Doesn't matter whether the score or max values are being described,
both share two possible types: float and int
apl_entry: Stack-allocate the entry label

No reason to deal with a bunch of memory allocations for such small
chunks. 64 bytes is a good chunk size, and a power of 2. Shouldn't
leave much wasted space in the heap
apl_entry: Add apl_newentry method

Creates a new gradebook entry with a given label. Starting score/max are
both zero
Add apl_entry sanity test
apl_entry: Add apl_destroyentry function

For gradebook entry cleanup
Merge branch 'entry' into gradebook
apl_gradebook: Fix missing struct qualifier
apl_gradebook: apl_closebook implementation
apl_gradebook: apl_closebook NULL checks param

So the code doesn't need to NULL check everything before passing it
to apl_closebook