Adds a bunch of nice stuff

* Adds tests that try to be as decoupled from the code as possible
* Adds more generic requests
* Abstracts the endpoints
* Adds basic auth support