Delete session data key when value set to undef

Without a way to delete session data, sessions can only grow until
expired.

This patch deletes the key from the session data hash if the value is
set to undef.  Querying a non-existent key returns undef, so deleting a
key has the same effective result as setting it to undef with the added
benefit of shrinking the session.

Documentation of these behaviors and a test are included.

Addresses Issue #129