threadpool: clear the exceptions queue in wait()

Updated ThreadPool.wait() to drain all exceptions out of the exception
queue everytime it raises a ThreadPoolException. This keeps the
exception queue from potentially growing endlessly and also prevents
raising old exceptions.
Supports multiple ipclusters via the --cluster-id option
  - flexibly way to choose how ipclusters restart/stop/start via ClusterID config
    - this provides users with option to not kill active clusters
  - backwards compatible

TODO:
  - update starcluster documentation
  - option to specify ClusterID class in starcluster config
  - ln -s ~/.ipython/profile_default/security/{<current json>,ipcontroller-[engine|client].json}