Make the deferred backend a package variable

Module authors should not care which event loop is in use. They should
just use the Promises module directly:

    package MyClass;
    use Promises qw(deferred collect)

The end use should specify their preferred event loop once at the start
of their application:

    use Promises -backend => ['AE'];
    use MyClass;

See #8
Merge pull request #12 from clintongormley/backend_package_variable

Make the deferred backend a package variable
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