<!--- Verify first that your feature was not already discussed on GitHub -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
Allow to specify a new "format" parameter in "openssl_privatekey". Today the output format is decided by a very simple heuristic which requires further commands to work properly.
I need, for example, to generate a RSA private key but in PKCS8 format. The current heuristic uses OpenSSH format for RSA keys and only uses PKCS8 for Ed25519 and similar. This makes me use a "command" with "openssl" to convert the generated key, which leads to idempotency problems and unnecessary complexity.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
openssl_privatekey

##### ADDITIONAL INFORMATION
<!--- Describe how the feature would be used, why it is needed and what it would solve -->
The current heuristic should be kept unless overwritten by user.

<!--- Paste example playbooks or commands between quotes below -->
```yaml
openssl_privatekey:
  path: /etc/ssl/private/ansible.com.pem
  format: pkcs8
```
The values allowed are `pkcs1`, `raw` and `pkcs8`

<!--- HINT: You can also paste gist.github.com links for larger files -->

'2.23.43.1.4.7': ('wap-wsg-idm-ecid-wtls7', ),
    '2.23.43.1.4.8': ('wap-wsg-idm-ecid-wtls8', ),
    '2.23.43.1.4.9': ('wap-wsg-idm-ecid-wtls9', ),
    '2.23.43.1.4.10': ('wap-wsg-idm-ecid-wtls10', ),
    '2.23.43.1.4.11': ('wap-wsg-idm-ecid-wtls11', ),
    '2.23.43.1.4.12': ('wap-wsg-idm-ecid-wtls12', ),
}
_OID_LOOKUP = dict()
_NORMALIZE_NAMES = dict()
_NORMALIZE_NAMES_SHORT = dict()
for dotted, names in _OID_MAP.items():
    for name in names:
        if name in _NORMALIZE_NAMES and _OID_LOOKUP[name] != dotted:
            raise AssertionError(
                'Name collision during setup: "{0}" for OIDs {1} and {2}'
                .format(name, dotted, _OID_LOOKUP[name])
            )
        _NORMALIZE_NAMES[name] = names[0]
        _NORMALIZE_NAMES_SHORT[name] = names[-1]
        _OID_LOOKUP[name] = dotted
for alias, original in [('userID', 'userId')]:
    if alias in _NORMALIZE_NAMES:
        raise AssertionError(
            'Name collision during adding aliases: "{0}" (alias for "{1}") is already mapped to OID {2}'
            .format(alias, original, _OID_LOOKUP[alias])
        )
    _NORMALIZE_NAMES[alias] = original
    _NORMALIZE_NAMES_SHORT[alias] = _NORMALIZE_NAMES_SHORT[original]
    _OID_LOOKUP[alias] = _OID_LOOKUP[original]
def pyopenssl_normalize_name(name, short=False):