Add basic CaseClient and GetCases command/iterator

Needs more validation around the GetCases command parameters, and then
add more commands.
Use CommaAggregator for any AbstractClient clients

The Desk.com API expects multiple values to be specified with
comma-separated values, so all clients that inherit from AbstractClient
should use the CommaAggregator.
Allow non-array single values in array parameters

A primitive may be used for the value of a parameter that requires an
array, it will be automatically wrapped in an array by the PreValidator.
This will then undergo standard validation according to the array items,
as if it had been originally passed in as an array.
Improved validation of GetCases parameters
Use Guzzle version 3.3
Update Composer dependencies
Use Guzzle ResponseClass marshalling functionality

As this has been implemented in core Guzzle, the re-implementation
previously used can be removed.
Don't allow negative value for case_id
Add GetCase command to get a single case by ID
Add Travis configuration
Use reflection to avoid awkward getDirectory()

Reflection can provide the directory that the concrete child class of an
abstract class is defined in.
Avoid GitHub rate limiting Travis composer install
Add Travis build status badge to README
Increase error_reporting() to maximum during tests
Allow setting multiple parameters in OperationTest
Make "id" required for GetCase operation
Allow non-numeric external_id in GetCase operation
Add getCaseStatus() to convert between IDs/names
Fix PreValidator setting non-set query params
Add client() method, gets OperationTestCase client