initial pass on a ProfileEnforcer. branch still broken, deal with it

CertificateAuthority::Signer still needs to be refactored and committed.

Tests still needed for new Signer and for all the extension creation
code in R509::Cert::Extensions::* (much of this can come from the old
Signer tests)
profile enforcer now takes a single hash for #enforce
refactor Signer and tests (more massive refactoring for #38)

This refactor completely changes the behavior of the Signer. It now
takes a limited # of options in the hash and assumes you've built your
extensions prior to calling the signer. You can either build them
manually or use the ProfileEnforcer to create them.

Also included are some README updates.

Test coverage around the extension creation will be improved next
added test coverage for all extensions + much more

Modified a bunch of the keys to be symbols rather than
strings for better consistency in the API. This changes
the YAML as well (sorry).

Extension creation now allows specification of criticality
Validation in CertProfile moved to a validation mixin

Still to come:
-README and YAML updates and more YAML changes
-Leverage ValidationMixin in extension creation to
  give friendly errors there if you pass bad hashes
-GeneralName(s) refactor?