ClientHandler Now Implements IDisposable

Since ClientHandler now manages connection resources, IDisposable can be
used to clean all connections before releasing an object.
Unrelated: Added a simple class diagram.