Enhanced @requires_session decorator. See #12.

This commit improves the previous design and is aligned with the issue's
expectation. The previous commit provided some basic framework for
building this one.

What remains to be done is testing the front-end system. We probably can
use requests by utilizing requests.session class to establish session.
At some point it might be more convinent if we write front-end tests
using tools like Seleium.