Preexec event

Issue: https://github.com/fish-shell/fish-shell/issues/1549

Implemented a solution as event instead of a function call as discussed here: https://github.com/fish-shell/fish-shell/pull/1550
Added documentation as discussed here:
https://github.com/fish-shell/fish-shell/pull/1563

Added a postexec event as well for completeness

Usage:
```
function preexec_test --on-event fish_preexec
  echo preexec handler: $argv
end

function postexec_test --on-event fish_postexec
  echo postexec handler: $argv
end
```