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).
All of this code should get removed with a future PR where we move over to the Leshan Encoder/Decoders.  It existed in the original class before LwM2mClient was made into an interface. Hopefully all of this code will disappear.