Handle enums with abstract methods

Arg parser currently throws IllegalArgumentException if you set
choices to .values() of an enum with abstract methods & pass anything other
than the first value. Use getDeclaringClass to check enum types instead of
getClass.