Add `appendPropertiesWithKeyPaths` method

This commit builds off of the last PR, but I split it out for better discussion.
The only outstanding issue with it (that I know of) is the fact that floats print with different precisions as NSNumbers vs using `%f`