[#52117923] Match entire template content in tests

Use `\A` and `\Z` escape characters to match the entire contents of the
template string. A trailing newline at EOF can be ignored. This ensures that
only the two comment lines and the conditional lines appear in each context.

Added an additional test for param defaults.
[#52117923] Validate all existing params

Ensure that they are the data types that we expect. Removes the need to cast
everything as an array to deal with corner cases.
[#52117923] Test that parent class passes params

Tests that the parent class can both pass on params that it takes (as the
entry point) to the sub-class, and that it can respect the defaults
defined in the sub-class if nothing is provided.
[#52117923] Add domain, search and options params

These get written to `resolv.conf.d/tail` instead of `/head`.