expose discovery boot interface errors

- improved error messages on failure
- simplify fact extraction

TBH: this whole code needs to be refactored.
This error targets users, it would be better to use Foreman::Error here. Similar error should also be used on line 128.