type inference of empty literal

Infers the types of passed empty literals using the callees' type information.
```
class _Main {
	static function f(x : Array.<number>) : void {
		log "f";
	}
	static function g(x : Map.<number>) : void {
		log "g";
	}
	static function main(args : string[]) : void {
		_Main.f([]);
		_Main.g({});
	}
}
```