Revamped property listener system to allow for listening for as many properties as you like, globally or to specific holders. This new system uses Annoations in order to provide such functionality, however now keys have to be written out manually in annotations as you cannot pass data to annotations at runtime.

Signed-off-by: Dalton Pelc <daltonjpelc@gmail.com>