Add apl_session header & source

Sessions are started when the user first runs the program. They will
login with a username and password to begin or continue a session.
Sessions keep track of the active gradebook, last login time, and
other miscellaneous data. A user's gradebooks can only be accessed
and modified when they login to a session. When a session is ended
the active gradebook is "remembered" and automatically opened when
the session is resumed.
Add apl_user header & source

apl_user stores information about individual users. To begin a session,
a user must exist and the correct login information must be supplied.
If any is correct, a session is unable to be started.

New users can create their own user profile and begin using APL with
a fresh session. Sessions may modify user information, so the user
profile files are loaded and changed every session.
Update README with description of program
apl_file: Add apl_isdir method
apl_gradebook: Don't verify input

Input verification is user's responsibility
apl.h: Add apl__perror macro

Calls perror unless APL_NO_EMSG is defined before including apl.h
apl.h: Add apl__fprintf macro

Defined to fprintf unless APL_NO_EMSG is defined
apl.h: Include math.h and link -lm
apl_entry: Add score/max API

setscorei
setscoref
setmaxi
setmaxf
getscorei
getmaxi
getscoref
getmaxf
Add apl_date header & source
apl_date: Add apl_freedate function
Add date sanity test
apl_date: Add various date API

minute
hour
phour (12, 1, ..., 11)
day
month
year
am
pm
test/date: Print out current date & time
Update README with data structure descriptions
apl_date: Add apl_read/writedatechunk functions

Dates aren't encrypted yet, but they may be in the future
apl_date: Data/time API accepts const struct ptr
apl_date: Fix apl_readdatechunk bug

Was reading the entire struct instead just the time_t value
apl_date: Don't write/read size of date data segment

We'll need this only when we start encrypting the dates
apl_gradebook: Store creation date as apl_date struct