use valuesDo:
use includesKey: and includesSelector:
use methodsInProtocol:, added removeProtocolIfEmpty:
use keysDo:
Array >> remove:ifAbsent: written in Smalltalk
using `ifAbsent: [ 0 ]` instead of `ifAbsent: 0`
Merge branch 'master' into lhf

Conflicts:
	js/IDE.js
	st/IDE.st
Inspector now shows variables.

It stopped showing variables, the reason was fixed `at:put:`
return value in TagBrush and missing `yourself` in Inspector.
package.json: add es6-promise to dependencies
amberc.js: remove obsolete require('exec') and require('util')
amberc.js: require('Promise')
amberc.js: rename check_configuration_ok() to check_configuration() which now returns a Promise
amberc.js: compose_js_files() returns a Promise
amberc.js: verify() returns a Promise.all() object
amberc.js: category_export() returns Promise.all() object
amberc.js: remove obsolete async_map()

replaced by Promise.all()
amberc.js: use Promises for compile step

split the compile function in two separate phases
readFiles() + compile()
FileServer: Fixes spurious warning on startup from #checkDirectoryLayout
amberc.js: create_compiler() now uses Promises
amberc.js: turn resolve_js() into normal function