Fixed an issue in MacroUtilities.implementsInterface(), where interfaces that were indirectly implemented via other interfaces would not be detected.
Changed all fields (apart from RepeatedField) to implement a common interface that allows their values to be retrieved.