initial commit, implements and tests all methods except hosts.explain()

.gitlab-ci.yml not found in this commit