feat(hooks): refactor decoration with hooks to DRY

- move `_wrap_with_after`, `_wrap_with_before`, `_wrap_with_hooks`
  to falcon/hooks.py
- use `_wrap_with_before` and `_wrap_with_after` in `@before` and `@after`
- allow wrapping of method by using explicit `is_method` argument
feat(hooks): update docstrings of wrapping helpers