Fix/3.x/issue 2721

Issue link: https://github.com/hazelcast/hazelcast/issues/2721

Issue was about in some cases, classloader of caller side can be null (means that caller class is loaded by bootloader such as core java classes) and classloader of current thread may be null.

To solve this issue, try to use classloader of current class and if it is null (this might not be possible) use system classloader.
I prefer an abstract base class;

```java
public abstract class AbstractManagedThread extends Thread {
...
}
```