ecmascript: Add page.flush()

Fixes #2342
osx: Generate device id
ecmascript: Add showtime.deviceId

Fixes #2341
kvstore: Fix some cosmetics and missing debug
ecmascript/prop: Add 'noInitialUpdate' as subscribe option
ecmascript: Set 'apiversion' in plugin object
ecamscript: Add support for per-page options

Fixes #2340
ecmascript: Make sure store.create() can mkdir the full path leading to the file

Fixes #2343
ecamscript: Fix typo in setting.createAction()

Fixes #2346
prop: Fix typo causing PROP_SET_PROP not to work
prop: Make PROP_SUB_IGNORE_VOID work for all cases
ecmascript/page: Fix broken use of this. in some callbacks

Fixes #2351
ecmascript/prop: Don't treat 'destroyed' as a value in value subscriptions
Expand INITME() helpers to also to finishing when shutting down
ecmascript: Make sure 'stores' are saved on plugin unload
ecmascript: Unload all plugins on exit
event: Add function to print human readable form of an event. Good for debug
ecmascript: Pass correct argument to item.onEvent callback

Fixes #2352
glw: Handle TOKEN_INT in deliverEvent()

refs #2352
ecmascript: Fix deadlock