Update waiters to use the new get_waiter_model

This fixes an issue where previously we were creating a client
without specifying a region, which in certain cases would trigger
an error.  Now we only use the waiter model to generate the necessary
commands.

As part of thie change I went ahead and just switched the invoke
to just use the service/operation object.  This isn't ideal, but at the
same time, it's pretty clear that for the time being there's no way
to do this entirely with just clients.  Given that's the case, I don't
feel it's that imperative to use clients where possible.  When
we switch to clients, this module will need updates regardless.
It also simplified the code a little bit.