Refactor core action to return a parser instance based on the response body

> This allows for more flexible use of conduit when we replace out Excon with something else or even another gem library.

This is an acceptable use case. However, you need to ensure you return _all_ of the useful information, otherwise you're going to make debugging a lot harder. I would still delegate to Conduit::Connection#request for this.

> The point is not matching the namespace of the gem. The point is to guarantee the caller that they can ask for "response_body" and "response_status" from the object returned by the Action#perform method. We are wrapping transport layers other than excon and those transport layers do not expose the http response. For example, braintree_ruby uses Net::HTTP directly and never provides access to the body, status, headers, etc.

This doesn't make sense. If braintree_ruby already has an HTTP implementation it's not a good fit to be used inside conduit. Conduit is for easily making HTTP(S) requests with "templatized" request/response bodies. Using another library inside of it that makes HTTP requests is redundant.