Use local vars instead of ivars in `run` and `run!`

Changes the `run` and `run!` method to use local variables instead
of instance variables. This is to be clear of the intent and scope
of these values. Using instance variables implies a state of the
object, which isn't intended in this case. These values are just
the pieces of processing a service. This adds a `ProcessedService`
struct that is used to collect these pieces. Now, each call to `run`
generates a `ProcessedService` and returns it.