Optional .js & optional semicolons

Fixes part of #19. Also now allows `require("example.js")`.