Refactor elixir code

This should lead to better overview
Implement Access for Geef.Tree

Make Geef.Tree its own record so we can define the protocol
implementation for it. There shouldn't be any generic functions you'd
want to call on a tree record.