Only install .py files in installation/config.py

While using some error checking tools I had .pyc files
in the source tree and then I hit a UnicodeDecodeError
during installation because installation/config.py
tried to 'install' one of the .pyc files.
Ask for SMTP configuration during installation

Used to be hardcoded to use localhost:25, no authentication and no TLS.
Also offer to send a test email to verify the configuration.

Also add support using an SSL/TLS connection to the SMTP server (using
smtplib.SMTP_SSL() instead of smtplib.SMTP()) as an alternative to
using STARTTLS to upgrade a plain-text connection.
Merge pull request #19 from mo/dont_install_configuration_pyc_files

Only install .py files in installation/config.py
Fix typo s/invaild/invalid/
Merge pull request #24 from mo/fix_typo_invaild

Fix typo s/invaild/invalid/
Fix error message when showbatch is called without batch parameter
Add support for authentication based on session cookies

A new table (usersessions) is added to the database schema.
Support (restricted) anonymous access

If Critic authenticates users and keeps track of session using cookies,
it's obviously possible to defer sign in until the user explicitly
decides to, or has to, and provide restricted anonymous access until
then.

Pages by default allow anonymous access, with possible opt-out by
redirecting to the /login page.  Operations, on the other hand, are by
default limited to signed in users, with possible opt-in to allow
anonymous access.
Add support for changing user's password
Merge pull request #25 from mo/showbatch_without_batch_error_msg

Fix error message when showbatch is called without batch parameter
Only add "check" link for branches that has a base branch

For branches without base branches the link was broken, since the
base branch name is one of the URI parameters to /checkbranch.
Fix "drop review" confirmation dialog title

Due to a missing apostrophe, the dialog title was a slightly vague, and
somewhat haunting, "Please".  It was supposed to be "Please Confirm".
Quickfix: add cosmetic space for consistency
Add install.py command line param to skip test e-mail
Apply cluebat for missing REMOTE_USER in "host" auth mode
Don't import 'bcrypt' when not needed

It's not installed as a dependency unless it will be used, so it's a
good idea not to import it when it won't be used.  Also disable the
/login page, and the /validatelogin and /endsession operations, when
they aren't in use (with "host" authentication or "httpauth" session
type.)
Improve presentation of generic Git errors

Catch gitutils.GitError globally and display a meaningful error message.
Fix display of "watched" category without "active" category

On /dashboard, if the "watched" category was enabled but not the "active"
category, fetchActive() was called between the query for watched reviews
and the processing of the resulting rows.  But fetchActive() used the same
cursor object to make its own query and thus trampled the result of the
query for watched reviews.

(The list of active reviews needs to be fetched so that the active reviews
can be excluded from the list of watched (inactive) reviews where they
don't belong.)
Fix upgrading when installed source file has been modified

An UpdateModifiedFile() object was created with the keyword argument
'prompt' instead of the correct 'message'.
Fix upgrade of installs that predate SMTP configuration

Missing call to installation.smtp.add_arguments() from upgrade.py, so
installation.smtp.prepare() tried to access undefined names in the
'arguments' object.