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).
Would it be better to have Resource implement LinkFormattable to avoid this instanceof check, if it isn't already? Then we can loop over for(LinkFormattable clientObject : clientSideServer.getRoot().getChildren()) and avoid the cast.