Issue #3620204: Add the address and contact shapes
Neither of these has anything to preserve. The address field type of the contributed module is used by none of the sites this module runs on - every address there is built by hand out of text fields on a paragraph - and phone numbers and email addresses are stored as plain text. So these are a new capability rather than a port, and what they answer with is decided by what the data is rather than by what somebody wrote years ago.
An address field stores fourteen columns and most of them are empty for any one address, because which of them a country uses is the country's business: a British address has no administrative area and a Ukrainian one has no sorting code. Answering with all fourteen is a wall of nulls that a front end would have to know the postal conventions of every country to read, so the parts that are filled in are named and the rest are not there - the same rule the rest of this library follows, where an empty key claims that something was asked and had no answer. The parts come out in the order an address is written in rather than the order the columns are declared in.
The country is the exception and is always both the two letters a program compares and the name a person reads, in the language of the response. That pair is the shape this module already answers with for a country stored as a plain list value. A code the list does not know is kept under its own name: the list being incomplete is not a reason to lose what the address says.
A telephone number is answered with twice, and for the same reason. What an editor typed - brackets, spaces and all - is how the number is read aloud where it belongs, and what a link needs is the same number with nothing in it but a plus and digits. A front end doing that itself would do it differently on every page. Neither value is formatted for display: how a number is grouped is a question about a country and a habit, and this module knows neither.
The address shape is registered only where the module that provides its field type is installed. A shape that can never be paired with anything would still sit in every list a planner and an administrator are offered, and choosing it would be choosing nothing. That is done through this module's own field shape alter hook, which is the first use of it from inside the module and shows what it is for.
Closes #3620204