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
Good catch!
I think that we could even make this class (and `FileNotFoundException`) no longer extends the Symfony one on v2.0 to decrease coupling with external packages. WDYT?