Move checks from _map_single to map
@lhoestq This one has been open for a while. Could you please take a look? @lhoestq Ready for the final review! I forgot to update the signature of `DatasetDict.map`, so did that now.
The goal of this PR is to remove duplicated checks in the `map` logic to execute them only once whenever possible (`fn_kwargs`, `input_columns`, ...). Additionally, this PR improves the consistency (to align it with `input_columns`) of the `remove_columns` check by adding support for a single string value, which is then wrapped into a list. 