Fix php 5.4 file upload

Summary: Fix php 5.4 file upload

Test Plan: run tests with php54
Fixing CurlAdapter to use Request headers + bump to v2.2.1

Summary: CurlAdapter should use Request::getHeaders()

Test Plan: bootstrap tests setting $client->getAdapter()->getOpts()->offsetSet(CURLOPT_VERBOSE, true);
Fixed instances where we build prototype_classes not using a provided Api object

Summary:
Basically changed code where we do:

    $obj = new $prototype_class();

to

    $obj = new $prototype_class(null, null, $this->getApi());

This allows developers who have multiple Api instances to properly specify the
correct Api object and still call things like account->getAdCampaigns and for
those campaigns to have the correct Api object.

Test Plan:
- Bootstrap without using Api::init() and not using Api::setInstance()
- Create account object and provide Api Object
- call getAdCampaigns()
Fix for PROMOTED_OBJECT missing from AdSet (2.2.0API)
Add BidTypes::BID_TYPE_CPA

Summary: Add bid type CPA

Test Plan: non-provided
Add CustomAudienceFields::PREFILL

Summary: Add prefill param to CustomAudience

Test Plan: Create a WCA
Implement CanRedownloadInterface + Enhance AbstractCrudObjectTestCase::assertCanCreate() + Apply to AdSet and AdGroup

Summary: Add Support for redownload parameter into AbstractCrudObject::create()

Test Plan: run tests
Implement Cursor ImplicitFetch + bidirectionality + signature refactoring

Summary:
Maker retrieving next page of data with cursors easier
- Remove callables based parsing in AbstractCrudObject
- Implement (optional) Implicit fetching
- Fully bi-directionality

Test Plan: ./vendon/bin/phpunit -c test/ test/FacebookAdsTest/CursorTest.php
AdImage::createFromZip(), AdAccountGroup::getUsers() and AdAccountGroup::getAccounts() return array of objects

Summary: AdImage::createFromZip(), AdAccountGroup::getUsers() and AdAccountGroup::getAccounts() shold not return Cursors since this is not the API behaviour

Test Plan: run tests