Unifying Client Requests with Server style

This PR is a refactor of the client in preparation for the start of implementation of bootstrap.  I wanted to unify the style of the requests so they mimic those of the server both in use (e.g., LeshanClient.send(request)) and design (visitor and builder patterns, many pulling heavily from the stuff on the server).
This guy needs equals/hashCode. I can see this being placed in some sort of Collection.