Changes to validate_docstring script to be able to check all docstrings at once
- [ ] closes #xxxx
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

This PR includes two main changes:
1. When calling the `scripts/validate_docstrings.py` script without parameters, it returns a JSON with the validation of all docstrings.
2. Refactoring the structure of the code, mainly to be able to implement 1.

The previous behavior when calling the script with parameters was to generate a csv with basic information about each docstring (not the full validation, but basic things like whether sections existed, or the file where the function is defined).

The main change is that `validate_one()` now returns the results as Python objects, instead of printing directly to the console. Few other changes to make the code cleaner are implemented (mainly moving `_load_obj` and `_original_callable` inside the `Docstring` class.
