Combined the default and Node* constructor into one.

That would be with default arguments. Also it has been marked explicit.
Fixed up the find_first_child and find_last_child functions.

I'm using a pointer as an argument because the functions need to handle
nullptrs silently however that does mean some extra checks are needed.
Fixed up the push_child functions to set respective siblings.

The implementation is much cleaner too. One is now implemented using the
other!
Added a few checks to the iterator increment and deincrement operator.

It now won't crash when given an invalid iterator but also won't go up
past the iterator root if the root itself is a child of some other node.
The Node class is now iterable.
Removed empty line.
Added default arguments to the private Node constructor.

They make more sense, since *almost* always the Node will have a parent,
but not necessarily any siblings. As a single argument constructor it is
not yet used. Feels good to have though, makes things clearer.