Improved Promise.spread() to take a second parameter to handle promise rejections (consistent with Promise.then())

Also, added some test cases