Removing Property Duplication

MethodProperty and FieldProperty have a common superclass but had duplicated code between them. This commit reduces that duplication and pushes common code into the superclass, while, at the same time, adding some additional tests for the functionality.