Release channel factory resources

After doing controlled shutdown of the channel factory's thread pools, this
code calls releaseExternalResources() to clean up anything else that netty
might be holding onto that could slow and/or prevent clean shutdown. One
specific example of this is the HashedWheelTimer created by NioClientBossPool
which was keeping some apps open until forcing the app to exit.