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
Small refactoring of example.clj for anagram

`frequencies` is a core function that will make the word into a
map of letter frequencies, e.g.:

(canonicalize "hello")
;=> {\h 1, \e 1, \l 2, \o 1}

`frequencies` seems a bit clearer than the `split #""` then `sort`.

(Interestingly, the `split` is not necessary even if `sort`ing, since
Clojure will represent `word` as an Object array of Characters,
then return it sorted. `frequencies` probably ends up slower than `sort`
over large strings due to the incremental object allocation, but also
is likely _faster_ than `split` ... `sort`.)
Small clarification for anagram README

It wasn't clear to me whether this was supposed to return a list of one
vs. a single string in the case of one match, and an empty list vs.
nil/null/() in the case of no matches.
Add empty test case to phone-number_test.hs

When solving the Haskell phone number assignment with a pattern match, one could get into a situation where the patterns are non-exhaustive for empty strings. The resulting error should be triggered by the automatic test. This commit adds another test case to assert that an empty string is treated like an invalid phone number.
Add test case with only invalid chars to phone-number_test.hs 

When solving the Haskell phone number assignment with a pattern match, one could get into a situation where the patterns are non-exhaustive for empty strings resulting from filtering all invalid characters. The resulting error should be triggered by the automatic test. This commit adds another test case to assert that a non-empty string with symbols and no digits is treated like an invalid phone number.
Don't treat instance variables (in code blocks) as mentions

For lack of the knowledge of a simpler way and because I did't want to
write code to parse markdown code blocks myself, I implemented this by
rendering the markdown to HTML using the same Markdown processor
that the site uses and then using Nokogiri to strip out any <code>
or <td class="code"> nodes, which were the two ways that the code spans
and fenced code blocks were being rendered, respectively.

A couple of potential downsides to this method are: 1. If the rendering
of code blocks changes this will no longer work. (However the tests
should catch it). and 2. I'm not sure how fast the markdown renderer is
and how fast Nokogiri is at doing these operations, so I'm not sure if
this could be a potential performance hit. I suspect it won't be
significant though.
Merge pull request #755 from drueck/mentions

Don't treat instance variables in markdown code blocks as mentions
Replace seed generator
Remove square brackets

...so as not to leave out Golang, PHP, Rust, etc. programmers.
Merge remote-tracking branch 'upstream/master'
Add 'For bonus points' section to some assignments.

Refs #746.

Also fixes some beer-song README formatting issues.
specs -> tests in 'For bonus points'.
Merge pull request #757 from henrik/for-bonus-points

Add 'For bonus points' section to some assignments.
Remove term 'bikeshedded'
Merge pull request #753 from senorflor/master

Small tweaks for Clojure anagrams
Fix tab highlighting issue for the tabs on the exercise pages, #759
haskell say
haskell secret-handshake
haskell series
haskell sieve