Make session creation lazier

Don't create a session just because someone attempted to read data from
one.  I.e. just because someone checks C< session("logged_in") >> don't
create a new, empty session.

Addresses GH Issue #155
Only flush sessions if they are dirty

Adds an 'is_dirty' attribute and only flushes the session if the session
is marked dirty.  This avoids unnecessary writes of unchanged data.
perltidy some files