Perl::Critic pointed out a couple of things

1. return shouldn't explicitly return an undef value
2. We forgot to use strict/warnings in several modules
Separate out code for fetching logged in account

Rather than duplicating blocks of code into every page that
requires an account to be logged in, split it out into the
fetch_account() method. Should also be able to handle when
a page would like an account, but it isn't essential.
Add ability to display a message on account page

This would be used where something performs an action and
redirects back to the account page (e.g creating a character)
Should generally store a hashref in the account_message
session data which includes status='error'|'ok'|'info' and
message='a message' or error='an error'
If just a string is stored in the session, it assumes it's
information only.
Use session function correctly
Include the character section into the app

Should have been done in commit c19f291 but the routes
/character?id=X and /character/create should now display
some content.
Check character creation limit hasn't been reached

If there are no more characters permitted for this account,
store an account message and redirect back to /account
Example styles for account messages
Match the session key to what's used elsewhere

Some minor confusion between source and requested_path session
keys. Just luck that it worked previously because we only had
one page that would redirect and that was the default if a
requested_path wasn't specified.