XD-249: Provide a client library for XD REST API

Current state should be mergeable and provide value, basically covers XD-250, XD-251, XD-254.

Also serves as the root of another branch I have regarding Shell