Pull in aliases and file extensions from Pygments

Fenced code blocks in Markdown on github.com currently let you specify either a Linguist language name or alias, or anything that matches a Pygments::Lexer. My goal here was to remove Pygments from the equation: we should be able to find a Linguist::Language for any fenced code block without consulting Pygments.

The commit messages explain the process in detail, but the basic idea here is to take all the aliases and file extensions that Pygments knows about and put them into Linguist itself.

/cc @vmg @arfon @bkeepers 
This change makes it no longer safe to pass `nil` into this method. (Ditto for the other methods I touched.) I feel bad that I've broken backward compatibility in the 3.5.0 release. I think I'll make these nil-safe again and release 3.5.1.