Add BraintreeGateway#cancel

This new method will decide whether to void or to refund a payment.

A payment can be voided if it's either authorized or submitted for settlement. In all other states, it MUST be refunded.

Fixes #145

Conflicts:
	app/models/spree/gateway/braintree_gateway.rb
Fixes New Braintree Cancel Method

Fixes #152