Add image classification script, no trainer
# What does this PR do?

This PR adds an example script for image classification that leverages Accelerate instead of the HuggingFace Trainer.

To do:

- [x] verify local `train_dir` and `validation_dir`
- [x] update README
- [x] add log fixes (Tensorboard)

Both can be updated after #16585 is merged.
_The documentation is not available anymore as the PR was closed or merged._<|||||>@sgugger not sure why, but the test for the script fails:
```
WARNING  datasets.builder:builder.py:388 Using custom data configuration huggingface--image-classification-test-sample-b7448dc7ae37f2cf
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:388 ***** Running training *****
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:389   Num examples = 8
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:390   Num Epochs = 3
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:391   Instantaneous batch size per device = 2
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:392   Total train batch size (w. parallel, distributed & accumulation) = 2
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:393   Gradient Accumulation steps = 1
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:394   Total optimization steps = 12
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:471 epoch 0: {'accuracy': 0.0}
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:471 epoch 1: {'accuracy': 0.0}
INFO     run_image_classification_no_trainer:run_image_classification_no_trainer.py:471 epoch 2: {'accuracy': 0.0}
```
Weirdly, it passes locally for me.<|||||>I'm getting issues when only passing `id2label` and `label2id` to the config, but not the `num_labels`:

```
if size_average is not None or reduce is not None:
            reduction = _Reduction.legacy_get_string(size_average, reduce)
>       return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
E       IndexError: Target 6 is out of bounds.
```<|||||>Oh ok, shouldn't be the case. Let's put back the `num_labels` for now and I'll have a look later at why it failed to update properly.