Minor fixes, little bits I've seen whilst looking through the code.

- Change client metadata so it's able to accept any number of metadata arguments.
- Add in requirements.txt file to track dependency versions.
- Other little intrusions.