add support for an external autosign command

This change adds 2 parameters:

1. `csr_attributes_file`
Allows for specifying user defined attributes to be added to the CSR. The file is yaml instead of flat key/value as this allows you to have an array of values for a parameter (which is also allowed in a CSR).

2. `autosign_command`
Allows for running an external command to determine whether a certificate should be automatically signed or not. The command is passed the certificate name as the first argument. The command should then exit with status `0` to indicate that the certificate should be signed, and status non-0 to indicate it should not be signed.