Adds support for 'unrated' option

This boolean option allows to choose if the algorithm can pick up unrated
tracks or not. If set True, the generated playlist can contain unrated tracks
(if any in the user library). If set False, only stricly positive rated tracks
are used.
Default: unrated=True
Explains how works copy_playlist(uid, plid)
FIX typos
Adds not None check after fetching LibEntries

Prepares for managing playlist deltas
FIX no tracks found in user library
FIX iterating NoneType object

Adds 'IS_EMPTY' error code (used if generating a playlist fails)
FIX several bugs

FIX handling when one or more seeds
FIX check if tracks found or not in user library
E-mails for account validation and password reset.

This diff introduces a new e-mail delivery feature that currently uses the
Postmark API. It is used in two cases:

1. When a new account is created, to validate the e-mail address. Note that the
   goal is just to set a flag in the DB---unverified accounts are not limited.
2. New API endpoint that allows resetting your password when you forget it.

The two web endpoints that are reached from the links contained in the e-mail
are not yet implemented, thus this should be considered work in progress.
Fixed a few bugs related to e-mail delivery.

I don't always test my code, but when I do, I do it in production.
Merge branch 'dev/solo'
Endpoints for password reset and account validation.

Two new web endpoints, one that enables users to reset their password and one
that confirms that a user's e-mail address is valid.
FIX typo in remove_playlist URL
Merge branch 'dev/solo'
Small fixes to e-mail features.

I did the debugging on the staging server, and found a few things that I didn't
do right on the first try. The code as it is now has been tested by hand, with
the API test script:

    echo "{'email': 'lucas.maystre@epfl.ch'}" | ./api.py -d POST /resetpw
    echo "{'email': 'bengiuliano@gmail.com', 'password': 'bloblo'}" | ./api.py \
        -d POST /users
    echo "{'email': 'bengiuliano@gmail.com'}" | ./api.py -d POST /resetpw
    ./api.py -m bengiuliano@gmail.com -p bloblo GET /
merge with groupSuggestion