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
I'm not very comfortable with that but it is probably ok for now...
It will be easier to "fix" that once #1663 is merged anyway.