Fix for interpreters from samples

While trying to do some refactoring on the shebang detection I realized that the interpreters used in samples was not properly getting added to `samples.json` (see first commit  eccea65) like we do with extensions. It looks like it's been that way since the beginning (https://github.com/github/linguist/commit/7a6202a8c3d667f3476839687f00cfc47c56703a).

This "fixes" it, but exposes a few more issues:

0. We have some samples with undeclared or wrong shebangs (see test failures). Those need fixed before this can be merged.
0. `samples.json` stores extensions/interpreters, but then we have tests that validate that samples don't use extensions (and now interpreters) that are not declared in `languages.yml`. Should we just remove `extensions` and `interpreters` from the cached `samples.json`, update everything to use the language definitions for those, and rely on the tests to validate that samples are using properly declared extensions and interpreters?

/cc @arfon @pchaigno https://github.com/github/linguist/pull/687
So right now we would be ok because it uses file extension, which we look up first. Shebang detection (currently) only happens if there is more than one match on filename.