Rename, refactor property getter; add test

- Rename checkProperties to 'nestedValue'
- Use local var during loop instead of argument object
- Return an explicit undefined value if tested property doesn't exist
- Add test for empty propertyChain argument