Add multiple executors

Refactoring / clean up
Adding executors instead of framework messages
Should you decrement namenodesInitialized if a NN task terminates? Otherwise, it will keep incrementing infinitely.
Or, in the event of one NN failure, is the other one considered already initialized, and you just have to start a new backup?
Even still, if you're still initializing the cluster and one of the NNs starts running then fails before the other NN initializes, wouldn't you need to start a new NN and initialize it before setting initializingCluster=false?