Fixes bug with HA client in multi threading environments

HAClient would wrap Client methods with HA functionality, but did
this in the constructor. This caused wrapped methods to be wrapped
again when client.py was included multiple times.
This functionality has been moved to a classmethod that only
is called once on module load time.