implement and use basic_request

most requests only need the json data

implement a wrapper that will only return the json data,
which removes as much logic from the access points as possible
resuffle how login is handled

This splits the logic from the access points, and
properly checks logging in