i3-save-tree: only create "swallows" key for leaf nodes (Thanks xeen)

fixes #1149
sanity check: drop swallows for split containers (Thanks xeen)

fixes #1149
ipc: dump new "swallows" properties
add testcase for #1149
use designated initializers for yajl_callbacks struct
Movement into a branch considers movement direction

Change the behavior of movement into a branch with respect to the
position the moving con will be placed within the branch when the
movement is complete.

The correct position is determined by the direction of movement or the
position of the focused-inactive container within the branch.

If the direction of movement is the same as the orientation of the
branch container, append or prepend the container to the branch in the
obvious way.  If the movement is to the right or downward, insert the
moving container in the first position (i.e., the leftmost or top
position resp.) If the movement is to the left or upward, insert the
moving container in the last position (i.e., the rightmost or bottom
position resp.)

If the direction of movement is different from the orientation of the
branch container, insert the container into the branch after the
focused-inactive container.

fixes #1060