QuadNode methods return references instead of pointers

This commit resolves issues #1 and #2
Returning references required implementation of some more features. Now parent() returns *this
instead of a nullptr for a root. Also, a dummy node called 'header' has been created. It's a true
QuadTree root pointed by end() iterator. It's the first node after the last one and the first before
the first node of a tree (root). It's the only node whose parent() == *this.