Adds "ConfigurableThreadFactory", this allows us to reduce duplicated code as well as provide more functionality for others.
We had a couple inner classes which could be replaced by this implementation.  This implementation also has more configurable options that users can easily take advantage of (instead of having to make their own ThreadFactory implementations).
Merge branch 'master' into unstable_staging