Create credit cards for customers through TR
Allow for calling Braintree::Customer.create with no params

This is legal but fake_braintree chokes on it
Add some (very) rudimentary validation support
Refactor confusing 'more_opts' line in create_payment_method

This code was complicated because I was trying to handle the case where someone posts to
create_payment_method without a 'credit_card' param. But that should be an error
anyway, so why handle it?
Style fixes per pull request
Make hash_from_request_body_with_key always return a hash

It was returning a blank string in the case where the key had no value. Changed
to return an empty hash.
Allow Braintree::CreditCard.create without customer

This is valid, according to the docs.
Use my version of credit card creation

IMO the version in master is a bit smelly - you'd think this would belong in
credit_card.rb. This version also remembers to update the customer hash when
creating a credit card for a customer. And lastly, this runs a check against the
decline_all_cards/verify_all_cards flags, which should be useful for testing
credit card TR.
Hack to make fake_braintree work with poltergeist.

When using poltergeist/phantomjs there is an issue when the backend
capybara server makes the Braintree::TransparentRedirect.confirm call
across to the fake_braintree sinatra app running on another thread from
the same overall process. This causes the tests to hang and eventually
time out.

By forking the process this issue no longer occurs and the two processes
can communicate with each other.

I'm not too sure on how to properly deal with forked processes, as we
detach in order to continue execution it does leave a Thin server off on
it's own after the test run is complete. You can fix this by adding an
at_exit hook to your cucumber/rspec suite.

at_exit do
  Process.kill("QUIT", ENV["BRAINTREE_PROCESS"].to_i)
end