iov_iter: hide iovec details behind ops function pointers
This moves the current iov_iter functions behind an ops struct of function
pointers. The current iov_iter functions all work with memory which is
specified by iovec arrays of user space pointers.
This patch is part of a series that lets us specify memory with bio_vec arrays
of page pointers. By moving to an iov_iter operation struct we can add that
support in later patches in this series by adding another set of function
pointers.
I only came to this after having initialy tried to teach the current iov_iter
functions about bio_vecs by introducing conditional branches that dealt with
bio_vecs in all the functions. It wasn't pretty. This approach seems to be
the lesser evil.