Update learnset checker

This prevents a number of illegal combinations with hidden abilities by
checking if the Pokemon does have a hidden ability in the gen of a
source.
incompatibleHidden is used so that the compatibility error is shown to
the user, rather than the "can't learn" message.