Add bare bones `localExpand`

This is a simple implementation of local expansion. It currently does
not support stop lists, but fully expands the syntax given to it.
Allows for interleaved case and rule definitions in the same macro.
Fixes a stack-overflow exception in expander's flatten.
Merge branch 'pr/428'
Merge branch 'pr/310' into merge_localExpand

Conflicts:
	test/test_macro_case.js
adding test for localExpand and local macros #310
backporting var transforms for master #310

redoing work done on es6-modules on
184ca297ac5b2a3f9f6a1902b661e51e604637d8
build