Added implementation for avl_add() with helper
Added implementation for helper: new_avl_el()
Added implementation for helper: insert_element_into_tree()
Added implementation for helper: element_with_hash()
Added implementation for helper: inserting an element into the tree
Moved documentation for add()
Moved documentation for new_avl_el()
Moved documentation for insert_element_into_tree()
Moved documentation for element_with_hash()
Fix: Fixed include statements
Fix: We don't need a `cmp` variable here

The case that the `cmp` variable is zero is excluded, as this would mean
that the node is already in the tree, whereas this function is assumed
NOT to be called in this case.

So we don't need to check for `cmp == 0`. Because this leaves us two
possible cases, we can simply remove the `cmp` variable and embedd the
hash comparison right into the if condition.
As the struct avl type is an embedded type, we shouldnt call free() on a ptr to it here
Added implementation for ht_destroy()
Merge pull request #81 from matthiasbeyer/implement-ht_destroy

Implement ht destroy
Add file for description of bloom-filter-usage
Add short explanation of bloom filters
Add subsection about disjunctive sets
Use regen_metadata() after before ending the current recursion step. Remove rotations therefor
After adding a node to the tree, we must rebalance the appropriate subtree
Moved add() code to avl_add()

As the code is not that complex anymore, the add() function body was
moved to  the avl_add() function with this commit.