Handle various ignored errors

All ignored errors where found with the [`errcheck`](https://github.com/kisielk/errcheck) tool, I highly suggest to use this tool in your development environment. There are more errors found by errcheck that I was unsure about or didn't feel the need to ignore explicitly (such as `defer`'s and `.Close`'s).

Handle various errors that were implicitly ignored previously. Most of the changes are to explicitly ignore an error, there are a few exceptions:

`collectors/icmp.go:c_icmp` was using a [deprecated method](https://godoc.org/github.com/tatsushid/go-fastping#Pinger.AddHandler) of the `go-fastping` package. The change removed the error completely. 

`collectors/program.go:(*ProgramCollector).Run` had two separate code paths, one of them was ignoring errors. From what I could deduct it didn't seem to be intended, so I merged the two code paths into the one that handles errors.

`metadata/metadata_linux.go:metaLinuxIfaces` was using a variable defined outside of the callback function, I believe this allows it to add unintended(?) metrics if something weird happens. So I've moved it into the function.