Consolidate HTTP Client logic into client package

Whilst attempting to move forward with the v2 LabKit logging migration, I've noted that there's a significant amount of complexity in this project where it could really be distilled down into a simpler, more straightforward format.

My intentions are to consolidate the logic that exists within the gitlabnet and config packages around http client instantiation, into the top level client package and have that be the singular place that handles all the HTTP transport implementation details.

This will allow us to significantly reduce the code and duplication across these packages and remove a layer of unnecessary abstraction.

## Proposed Final Structure

internal/
- clients/
- - gitlab/
- - - audit.go
- - - access.go
- - - certs.go
- - - keys.go
- - - git.go
- - - lfs.go
- - - personalaccesstoken.go
- - - twofactor.go

I'd then look to simplify the way that we instantiate and propagate this client through the main binaries. Ideally, this client would be instantiated once at startup and passed through the various commands to ensure we reuse HTTP pools.

The commands will then be simplified to remove their requirement on the config structs.

Edited by Elliot Forbes