Refactoring the JobTypeManager to allow for reloading of jobtype plugins without a bounce

Some cleanup, some refactoring of JobTypeManager.
Because JobTypeManager is so critical, also added a bunch of tests to verify that things are working.

The changes should allow us to update the JobType plugins in the manager without having to bounce AzkabanExecuterServer. This will save us a lot of time for upgrades.