Remove duplicate unbookable dates from Cardiff
* Generated a controller for entering visitor information in the API flow.

[#81200736]
* Added a switch for displaying a phone number input in different flows.

[#81200736]
* Moved common templates to another location.

[#81200736]
* Added a flag for instant booking.

[#81200736]
* Some tests.
* Branch to the API flow unconditionally if the prison supports it.

[#81200736]
* Moved common visitor-related functionality to a separate module.
* DRY-ed up tests, so that parts are reusable across both flows.

[#81200736]
* Separated models into deferred- and instant-.
* DRY-ed tests around models.

[#81200736]
* VisitorsManipulator now knows which model to manipulate, and can be reused across flows.

[#81200736]
* Instant/Deferred controllers can now generically manipulate visitor data.

[#81200736]
* PrisonerDetailsController now creates a new session without any visitors.

[#81200736]
* Fixed failing tests around missing visitor in the visitor array in the session.
* Fixed tests in the deferred flow around a different type of visitor present.

[#81200736]
* There's something funny about how fields are named when using _field methods, used _field_tag instead.

[#81200736]
* Added Instant::SlotsController.

[#81200736]
* DRY-ed SlotsController.

[#81200736]
* A few view updates for slot-related actions.

[#81200736]
* Moved around some views for visitors details for both flows.

[#81200736]
* VisitMetricsEntry now has a kind field.

[#81200736]
* MetricsLogger now records instant visits.

[#81200736]