Caching code for reading the ssh_known_hosts file.

When you have thousands of machines, re-parsing the ssh_known_hosts file
once per reply becomes extremely expensive (to the point where you
spend several seconds on the CPU, just doing that work). This results
in discovery failing to find a bunch of hosts, as the discovery timeout
is for replies to both be recieved and validated, and the validation
can take longer than the timeout.

By instead only reading the file once, we avoid that, meaning that we
can sensibly discover hundreds or thousands of hosts within the
discovery timeout.

This works nicely, however it won't work so well for registration as in
that case the known_hosts file IS opened by the server, and so will be
cached forever, which isn't desireable..
Fix ssh_known_hosts file cache invalidation

We store the mtime of the file that we cached, so that if it's
subsequently changed then we re-read the cache.
Add a failing test for insanity in ssh_known_hosts

This replicates the same failure mode that @sophaskins managed to provoke.
Fix the bug by not trying to parse lines which don't split to enough fields.
Initialize known_hosts_mtime
Merge pull request #8 from Yelp/cache_known_hosts

Cache known hosts file to improve performance when you have 1000s of hosts.