Added then_discard() to allow the promise chain to be broken

This is useful for keeping the return stack flat while using
promises recursively.

Also added tests and Promises::Cookbook::Recursion

Fixes #10