Make a generic ThriftServerDefBuilderBase<T>

This base builder contains all the functionality of ThriftServerDefBuilder, but returns type T instead of its own type when calling any setters. This is so it can be overridden, and the chained calls to setters can still work.