Fix bug in pkgrepo when switching to/from mirrorlist-based repo def

**NOTE: This is a cherry-pick of #9133 against 0.17**

This adds a check to ensure that both of mirrorlist and baseurl aren't
specified, and also deletes mirrorlist when baseurl is specified (and
vice-versa). Additionally, rather than returning a string containing
errors when they are encountered, raise an exception.