Allow customising the HTTP Cache-Control defaults.

This is my proposed fix for #3501. It allows the default `Cache-Control` header to be customised using a yaml config array. You can choose true/false to enable or disable control settings, or you can set values.
For example:
```yaml
HTTP:
  CacheControl:
    max-age: 0
    must-revalidate: true
    no-transform: false
```
Would produce `Cache-Control: max-age=0, must-revalidate`

**EDIT: I've noticed that this would actually produce:**  `Cache-Control: must-revalidate`, because `0` is treated as false. Keen to hear thoughts before attempting to fix.
You need to do strict type checking here, because as you mentioned in your PR edit, not doing so produces buggy results.

If you could try to match the coding style prevalent in the rest of the framework - i.e. spaces in the right places - that'd be great.