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 in derived types still work.