Work towards elixir 14

While here, make the object be an elixir struct instead of delegating to
the erlang code.

As part of this, geef_nif:commit_tree() has been fixed to return the id,
insted of the type, as we know it's going to be a tree, but not then id.
Make Reference call the NIF itself
Add some tests for Index

Including making the default :undefined, so the NIF doesn't get
upset. Implementing the Access protocol would require a struct, so we
may or may not want that.
Get rid of some warnings