chore: use built-in validation for Python 3.11+ in fallback code
The validation has been delegated to the binascii module in Python 3.11+
This is much faster than it was before so we can start to use it and we'll completely drop the custom code once Python 3.10 is dropped.
break: use ValueError for altchars length validation
While strictly, this is a breaking change, it's unlikely this will cause any issues downstream.
CPython used to use a simple `assert` statement which was likely enough to catch errors for this argument which is likely hardcoded almost everywhere at some point.
pybase64 was relying on Python to do this argument check in the fallback implementation and used an `AssertionError` in the C-extension.
CPython moved to a `ValueError` in Python 3.15, at least for decoding.
Let's use a consistent check raising a `ValueError` in every case.