Creates BrooklynShutdownHooks

- Moves code from Entities.invokeStopOnShutdown(entity) to 
  BrooklynShutdownHooks
- Deprecates the method in `BrooklynShutdownHooks`, and changes callers
  to use `BrooklynShutdownHooks.invokeStopOnShutdown(entity)`
Refactor BrooklynShutdownHooks to make testable
Adds BrooklynShutdownHooks.invokeTerminateOnShutdown(managementContext)
BrooklynLauncher: register terminateOnShutdown(managementContext)

- and same in BrooklynCampPlatformLauncher
Don’t do important call as parameter to log.debug!

- doing t.get() in parameters to log.debug is asking for trouble!
- someone would likely add if (log.isDebugEnabled()) at some point
  in the future, causing things to fail unexpectedly for a customer
  who configures their logging differently from the default!
Adds timeout to Brooklyn shutdown hook
PR #1406 review comments
PR #1406 more review comments

- cleanup BrooklynShutdownHooks exception handling
Merge pull request #1406 from aledsage/feature/shutdownHook-for-ManagementContext

Feature: register shutdown hook for management context