Added AbstractClient and Expanded Client

Still a few things to do for the data store of the client, but now that
I found AbstractClient to use (and know more of what Seth is doing) the
Client is coming along a lot better.