Instance eval block passed to constructor for a nicer API.

By passing the fulfil and reject as method objects, we had to use the `method.call(…)` syntax, which isn't so nice.
Using instance_eval just exposes the methods on the Promise to the block. This will also work when we make the methods protected.
Added missing development dependency for guard-minitest
Made `fulfill` and `reject` protected methods.

Added Deferred helper class to access the methods outside of the constructor block.