Filter muted submissions when suggesting work

Adds a unmuted_for(username) class method to submission with test and
chains that method in user to prevent muted suggestions from being mixed
in when random submissions are suggested. Fixes #747
Don't use a string when you can use a symbol
Refactor memorization pattern
Tidy User#from_github
Refactor user#stash_list
remove duplicate text in grains assignment description
Minor refactorings
Fix #749 - Respect newlines as per Git Flavoured Markdown
Merge pull request #769 from iHiD/refactor_time

Some minor refactorings
Merge pull request #770 from iHiD/fix_749

Fix #749 - Respect newlines as per Git Flavoured Markdown
Merge pull request #768 from alpardal/fix-grains-description

remove duplicate text in grains assignment description
Add CONTRIBUTING.md
Merge pull request #771 from iHiD/contribute

Add CONTRIBUTING.md with style guidelines
Merge pull request #747 from kytrinyx/filter-muted-submissions

Filter out muted submissions in random nitpick suggestion
Add unlike functionality and improve associated code
Fix error message
Merge pull request #763 from iHiD/add_like_to_submission

Add unlike functionality and improve associated code
Update test to match new API
make Haskell tests return a proper exit code on failure
add a script to run all of the haskell tests