Improvements to logic when focussing a child node

Only scroll to center a focussed child node if:
- the child is smaller than the container, and is not already entirely
in view, or:
- the child is larger than the container, and less than half a
container's width/height of the child is visible