Add PublicKeyInjection to core tools
improve test coverage on PublicSshKeyInjection
Make sure commands can safely run multiple times.

Since these will be frequently run to update a server, we need
to make sure that they can safely run more than once without
tripping over themselves.