Refactor Library for Provisioner to be Extensible

Refactor the library code for provisioners to be more extensible and
more easily support plug-in provisioner classes.