Remove `using namespace std;` from header files

It is a bit rude to include the whole of the `std` namespace in our header files, because anyone including our headers then gets the whole of `std` in their global namespace.

This PR removes all `using namespace std;` from headers, mainly by pushing it down in to the source files. There are some instances where it was straightforward to use exactly the members of `std` that were required - in some cases I have done this.

Coverage: unchanged.