function _nicely(next, hasNext, onDone, delay) {
  if (hasNext()) {
    next();
    setTimeout(function() {
      _nicely(next, hasNext, onDone, delay);
    }, delay);
  } else {
    if (onDone) {
      onDone();
    }
  }
}
*********************************************************************
### utils.nicely() function

The utils.nicely() function is for performing background processing. utils.nicely() lets you
process with a specified delay between the completion of each `next()`
function and the start of the next `next()` function.
`utils.nicely()` is a recursive function - that is - it calls itself
(schedules itself actually) repeatedly until `hasNext` returns false.

#### Parameters
next : A function which will be called if processing is to be done. 
hasNext : A function which is called to determine if the `next`
   callback should be invoked. This should return a boolean value -
   true if the `next` function should be called (processing is not
   complete), false otherwise.
onDone : A function which is to be called when all processing is complete (hasNext returned false).
delayInMilliseconds : The delay between each call.

#### Example

See the source code to utils.foreach for an example of how utils.nicely is used.
*