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