apl_gradebook: Don't read in ciphertext

Entries are not stored as a block. Each entry is stored separately
with its own ciphertext length metadatum
apl_gradebook: Work on openbook implementation

Still need to implement and test entries encryption and decryption
apl_entry: Add apl_saveentry function

Encrypt and write an entry's ciphertext metadatum and contents
apl_entry: Add apl_loadentry function

Reads ciphertext length and data from file, decrypts accordingly
and returns the entry
Merge branch 'entry' into gradebook
apl_gradebook: Use apl_save/loadentry functions
apl_gradebook: Fix pointer cast warning
apl_entry: Fix memory leak in apl_loadentry
apl_entry: Add apl_getlabel function

Get label string of an apl_entry
apl_gradebook: Add apl_flistentries function

Prints the labels of all entries to a given file, each on a separate
line
test/gradebook: List all entries in test gradebook
apl_gradebook: Gradebooks store their entry capacity

Adding entries extends the capacity when there is no more space left
apl_gradebook: Add apl_appendentry function

Add a new entry to the gradebook
test/gradebook: Test adding entries to a gradebook
apl_gradebook: Update apl_appendentry function description