Makes the subclass implementations explicit so developers can see API

The current implementation assumes an API which for new developers is
rather difficult.  Doing this lets anyone wanting to add a new
fulfillment service explicitly know what the Service interface is
supposed to be.

Please review @jduff @daverooneyca