Insert semicolons after enum definitions and function constructors.
Remove redundant space at end of __js__ block in string_rec

Unecessary, and causes a redundant ; to be inserted in generated js.
Add @:shallowExpose meta.

@:shallowExpose works very similarly to @:expose, but instead of
exposing on the window object (or export for nodejs), the class or
static field is instead exposed only to the surrounding scope of
the js_modern generated Haxe closure.

These are different things, when the Haxe generated code is used as
one part of a larger JS project with where in my particular use-case;
all JS code (including haxe generated code) is compiled into a single
optimised and minified JS file wrapped in a large closure, in this case
I do not wish the Haxe types to be exposed to window, but only to this
large closure containing the other JS code using the Haxe types,
the @:shallowExpose permits that.

Example:

@:shallowExpose class A {}
@:shallowExpose class B {}
@:shallowExpose("x.y.D") class D {}
@:shallowExpose("x.C") class C {}

class E {
        @:shallowExpose static function e() {}
}

Generates:

var $__hx_shallows = {E:{},x:{y:{}}};
(function () { "use strict";
var A = $__hx_shallows.A = function() { };
var B = $__hx_shallows.B = function() { };
var D = $__hx_shallows.x.y.D = function() { };
var C = $__hx_shallows.x.C = function() { };
var E = function() { };
E.e = $__hx_shallows.E.e = function() {
};
...
})();
var E = {};
var x = {y:{}};
var A = $__hx_shallows.A;
var B = $__hx_shallows.B;
x.y.D = $__hx_shallows.x.y.D;
x.C = $__hx_shallows.x.C;
E.e = $__hx_shallows.E.e;
Merge pull request #2246 from deltaluca/dev_js_Math__name__

Only generate Math.__name__ for js if necessary.
seperator -> separator, revert e920e98.
attributes() should return namespace declarations.
[libs] Reverted to latest libs version... again.
Merge pull request #2253 from TomByrne/development

attributes() should return namespace declarations.
[docs] Taken off outdated info
close #2249
Move to unified @:expose with -D shallow-expose
Handle casting for cppia
initialize core-api before displaying fields of a @:coreApi type (closes #2257)
add @:impl metadata to @:fakeEnum pattern fields and ignore other fields when matching (closes #2250)
[docs] Updated sys.FileSystem.createDirectory docs
Do not include linenumber in stack hash
Work around toString pseudo-overloading in cppia and encode dynamic functions
Merge branch 'development' of https://github.com/HaxeFoundation/haxe into development
add @:keepInit to neko/_std/sys/net/Host.hx (closes #2261)
Do not use function call notation on data field