Firstly, your 'Idea 2 and 3' make no sense to me, to be honest. Perhaps some clarification would be neat.

Secondly, Idea 1 has been requested SEVERAL times before and seems like a pretty good idea, it however for the mean time has been addressed in a nifty little script coded by Online.

; Usage: /sleep N-millisecs
;
; Example: //echo Hi | sleep 2000 | echo Bye

alias sleep {
var %a = $ticks $+ .wsf
write %a <job id="js"><script language="jscript">WScript.Sleep( $+ $$1 $+ );</script></job>
.comopen %a WScript.Shell
if !$comerr { .comclose %a $com(%a,Run,3,bstr,%a,uint,0,bool,true) }
.remove %a
}

Eamonn.