Add `AbstractContractor` abstract type and a `BasicContractor` type that just contains forward and backward functions without all the extra stuff.