STORM-183: Replacing RunTime.halt() with RunTime.exit() with a special shutdown hoo...

replacing RunTime.halt() with RunTime.exit() with a special shutdown hook that allows 1 second for cleanup shutdown hooks and then sends kill -9 to process. Added shutdown hooks for supervisor and worker.
You are right, I want to avoid a model where people have to call (.addShutdownHook blah blah) and then remember to call (add-shutdown-hook-with-force-kill-in-1-sec). 
How about adding the use function and the actual forcing function as two seperate shutdown hook threads? 
(defn add-shutdown-hook-with-force-kill-in-1-sec
  [func]
  (.addShutdownHook (Runtime/getRuntime) (Thread. #(func)))
  (.addShutdownHook (Runtime/getRuntime) (Thread. #((sleep-secs 1)
                                                    (.halt (RunTime/getRunTime) 20)))))