(PE-4372) Added utilities for alt dns names

* Able to add extensions to a CSR
* Added utilities to create an Alt. DNS names extensions

This PR is for review only so people can start taking a look at it while I write some tests.
hrm... so do we actually want this?  Those predicate functions are sort of 'API', right?  Thus, I would think that we would not want to leak bouncycastle classes out of them?

Looking through the list of predicates I'm now realizing that we already have a few predicates that are leaking bouncycastle classes into the API, so you're not breaking new ground here, but is this something that we should file another ticket to try to fix?