Made the child spec far more readable.
Moved the initialization of the client to the init function.
Added a much more robust supervision tree for the herp_client.

This was done because we need a supervisor for the refregistar and
also a simple_one_for_one for each of the clients. This forced a break
between who was supervising what.

Currently now the supervision tree is like this:

root
├── herp_client_sup
│   ├── sub
│   ├── sub2
│   └── sub3
└── herp_refreg_sup
    └── herp_refreg

The subs are each a transient client process which you gain from
logging in, but the herp_refreg should only be started once.