This commit moves the check for the correctness of the `levels`
keyword argument into `RecipesPipeline.preprocess_attributes!(::KW)`
and calls the new function `check_contour_levels`, which in turn
will throw an `ArgumentError` if the argument is not correct.
To that end:
- Remove the check for non-integer and non-vector values of
`levels` from the PyPlot backend code, and
- Add low-level tests for the new function and high-level tests
for contour plots.