Refactor Application mocks

We have a large amount of duplicate code in all the mocks even though they already extend from each other. This PR attempts to stop this trend.

No real way of testing this as it's just the mocks. Just observe the tests still pass.
I didn't know what to do with the CLI class full stop. It didn't actually extend from the base mock class before unlike the web mock class. I refactored it - but to be honest I dunno if it actually needs doing?