Don't re-create singletons

Summary: This forbids singleton creation/re-creation after destroyInstances() was called.
Only after reset() is called singletons can be created again.

registrationComplete() behavior is also slightly change. We disallow singleton registration after registrationComplete() is called even in Relaxed mode. Strict mode now only controlls whether singletons can be constructed before registation is complete.

Reviewed By: @chipturner

Differential Revision: D1605136
Fix a crash in nested file functions

Summary: UrlFile functions correctly chased through multiple actrecs
to find the callsite. ExecutionContext::setVar only went one deep.

The result was that the example crashed because it tried to set a
variable in a frame that didn't have a VarEnv.

Reviewed By: @swtaarrs

Differential Revision: D1614350
Remove the implicit label hack in vasm-xls

Summary: The numbering scheme for positions requires that the first
instruction in a block not have uses, so that we don't end
up with empty lifetime ranges. In XLS, this was acheived by
inserting a DefLabel if the block didn't have one and it
started with an instruction with 1+ uses. In vasm-xls, I
hacked this by leaving an empty position there and
compenstating for it everywhere. But wrongly, because
phidef should be exactly at the block start.

This diff inserts nop instructions similar to the way XLS
originally inserted DefLabel, if a block started with an
instruction with uses. Inserting in vasm requires memcpy,
but blocks tend to be very small on average. I'll measure
JIT speed just in case.

Reviewed By: @swtaarrs

Differential Revision: D1582946
parse require, include, require_once and include_once

Summary: This diff adds require/include/require_once and include_once.
since these constructs are expressions, we allow this but while naming
we treat this as ANY.
In strict mode we only allow these constructs at the top level as statements.

Depends on D1610236

Reviewed By: @int3

Differential Revision: D1613311