This makes its api consistent with other add endpoints (see
origin-visit-status-add as one example).
This is preparatory work towards removing origin-visit-upsert.
It's similar to origin-visit-upsert now but it does slighly more:
- it checks for origin existence (raise if unknown)
- it's able to either deal with visit with id (replayer case) and visit with no id (the existing use case)
It does also less by delegating the validation to the model instantiation
(prior to the call of the endpoint) which is a good thing.
This also drops the dateutil.parser we want to phase out.
Related to T2310