Address third part of 451: Storing Key.parent on instance for future calls

Making `Key.parent` return the same instance on return calls.
    
This is in preparation for adding `parent` to the constructor.

Addresses third part of #451.