M4 macro processor in pure Javascript