Static scope analysis and transpilation of ES6 block scoped const and let variables, to ES3.
Convert 'var' declarations to 'let' or 'const' as appropriate.
Use block scopes and let while retaining function scopes and var
Babel plugin to transform top level block scope to IIFE