Fix bug causing due dates to be in the year 0000

This will need a better workaround in the future, involving finding
the *next* occurence of the given month and day, rather than the one
from the current calendar year.
Implement weighted sorting

The algorithm for sorting tasks is to calculate the nice of a task as
`priority * (due date - task)` then sorting the nices in order of lowest
to highest. Currently, it is possible to have a negative nice (due date
passed).