Support uploading files directly from a string in memory by setting a 'body' property with the file contents.

Added `uploadWithBody` method to `Zendesk\API\Attachments`, contributed by Bryan Nobuhara.

Simplified conditionals in Http::send. We check for three cases:
- If `body` parameter is set, use that as raw file data.
- If `uploaded_data` parameter is set, set `CURLOPT_POSTFIELDS` to that. Supports `@` prefix for uploading files. Legacy.
- If `filename` is set, open and read the file and upload it.

Added a unit test for `uploadWithBody`.