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).
+1.  I'm going to blame Eclipse for this one as this happened when I had it did inject an interface.  For some reason it likes to then rewrite things by putting in abstract classes :/