Change the interface of CanHandle to return error information.

I think this should should help improve robustness and give better error feedback.
I'm not sure if we should return here...We should definitely log it, but I think we can gracefully degrade what we do. For example, if the Docker driver fails to attach we can do most of the work from the raw driver.