Fixed a bug introduced while refactoring JS

accidentally wasn't calling wrongAnswer() on wrong answeer.
Added a check in sync_unlocks

makes sure we dont actually create two sets of a review for the same
vocab.
Fixed all_srs

correctly zips the times and the streak numbers for SRS checking.  Also
wrote tests for tasks and views and models.  Added a distinct() to
ensure we don't grab doubles, as for example, reading__level could
return duplicates for the same vocab object.

Fixed major bug in UnlockRequested, my get_or_create was passing in
needs_review=True, which was causing it to create duplicates, one with
True, and the old one with false. This leads to users having two of the
same vocab in the review. big nono.