Refactored MapOperator to inherit from Tpetra::Operator

We now inherit from Tpetra::Operator instead of Thyra::LinearOpBase.
We were always going to require Tpetra::MultiVector objects for
the apply and now need Tpetra::Map objects for the domain and
range spaces. Moving to this Operator interface makes it explicitly
clear to the user that we are operating in a Tpetra framework. This
still gives us portability for contiguous data (which we were going
to require anyway). Thyra is still used under the hood in the apply
implementation to offer easy implementations of special operators
and linear solvers.