Implement a first draft of B+-trees

This will need serious revisiting after implementing entity management and transactions (I should have done those first in retrospect), but it serves as a (seemingly) working implementation of B+-trees to guide a second version later on.