make callback optional in whilst

I believe that it's a best practice to make the callback optional.

This technique is used in core node libs (see https://github.com/joyent/node/tree/master/lib) as well as many popular community projects.

Fixes #446