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 but it does more:
1. it checks for origin existence
2. 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 instanciation
(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