[RFC] Integrate ffprobe

This is more of a request for comments for now as there are still things to polish.

#### ffprobe integration

This pull request enables using ffprobe for querying data about media files. It is *much* more reliable than the current way of getting metadata (it relies on parsing the output from ffmpeg, which is undocumented, unspecified and prone to breakage). ffprobe, on the other hand, has a specified output and even outputs JSON.

```javascript
var Ffmpeg = require("fluent-ffmpeg");

Fffmpeg.ffprobe("/path/to/file.mp4", function(err, data) {
    // Gets metadata for an arbitrary file
});

new Ffmpeg({ input: "/path/to/file.mp4" })
  .ffprobe(function(err, data) {
    // Gets metadata for an FfmpegCommand, only reliable with file inputs
  });
```

The current way of getting metadata still works, but it is no longer used internally for size calculations and progress events. As ffprobe is bundled with ffmpeg, no additional dependency installation is required for users.

See the updated [README](https://github.com/njoyard/node-fluent-ffmpeg/blob/ffprobe/README.md#using-ffprobe) for more details on usage and output format. I also added a [section with prerequisite information](https://github.com/njoyard/node-fluent-ffmpeg/blob/ffprobe/README.md#prerequisites).

#### Size/padding/aspect calculations

This pull request also remove calculations for size, auto-padding and aspect ratio. It uses video filters instead, and does not need to know the input size/aspect in advance (so metadata is no longer used). The `calculate.js` module is no longer needed; new tests have been written for these filters and the now-deprecated tests have been removed.

#### Metadata and progress events

Metadata was previously needed for progress events as we needed to know the media duration to compute progress percent. There were also issues depending on how the event listeners were defined (before or after starting ffmpeg).

This pull request rewrites how progress events are handled. When processing starts with a 'progress' listener registered, or later when the first listener is registered, ffprobe is called asynchronously on the input to read total duration. Progress events during processing use this duration as soon as it is available, and use a 0 duration when it is not.

Taking screenshots also requires knowing the input media duration, so ffprobe is called before.

#### Code refactoring

I also did some minor code refactoring:
* everything that is used to generate argument lists now resides in an `arguments.js` module.
* getting rid of "required metadata" enabled moving all processing preparations to a single `_prepare` method in the `processor.js` module