Add a new utility function to snap the screen

This function can't be invoked synchronous at present.
The users need to specify a callback handler to process further work after the screen is captured.