Exception refactoring

Fixes #90 
- [x] Create an `Exception` interface
- [x] Refactore existing exceptions and deprecate old ones
- [x] Create new exception to throw instead of the ones from STL or Symfony
- [x] Update tests to use new exception class names (works without that because it's BC :v:)
- [x] Update docblocks with the right version of deprecation
- [x] Update docs
- [x] Convert the new `Editor#run` from v1.3
`IOException#getPath()`  and `IOException#__construct()` have been introduced in Symfony 2.4, and we support the LTS 2.3 (introduction of `dumpFile`).

But don't panic! We can do the following:

```php
<?php

namespace Gnugat\Redaktilo\Exception;

use Symfony\Component\Filesystem\Exception\IOException as SymfonyIOException;

class IOException extends SymfonyIOException implements Exception
{
    private $path; // Will over write the original method in >2.4, but we don't care ;)
    public function __construct($path, $message, \Exception $previous = null);
    public function getPath(); // Will over write the original method in >2.4, but we don't care ;)
}
```