Initial commit.

This is a first usable version. It still lacks documentation and many useful functions.