Fixed #204: Type restriction doesn't properly work in class initializer when a union is passed
Added a spec for Fiber and use class variables instead of globals
Added PROGRAM_NAME constant and $0 as a synonym of it (unlike Ruby, it can't be reassigned)