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.

I'd prefer to keep this one line in this PR, just so the diff is easier to understand.