Feature: Rework Properties

Properties now require fields to be provided, and allow for a future of less `std.signals`. This (more importantly) allows for documentation to be generated properly.