Unify duplicated methods
Simplify setTimeout implementation

Fixes #165
Stop using Promise.is
Unify duplicated code
Use correct TypeError reference
Use loop instead of recursion
Use constant function whe primitives aren't wrapped
Stop passing callers around
remove obsolete checks
Update readme
Reduce indentation in all files