ObjectStore: store files in static versions

The ObjStore should be the place, where the staged objects are stored
persistantly. As in Git the files are basically compressed and stored in files
with the sha1-hash of their compressed contents.

Signed-off-by: Erik Bernoth <erik.bernoth@gmail.com>
Workspace: Inform about current work state

The Workspace class doesn't have much to do. It simply retreives all the files
from the workspace with relative links to the repository root. The repository
root is defined as the location of the ObjectStore.

TODO Later it should be possible to ignore files and directories from this
list, e.g. the ObjectStore itself.

Signed-off-by: Erik Bernoth <erik.bernoth@gmail.com>
StagingArea: stepwise preparation of commits

The StagingArea holds all the data that should be commited. Especially keys
from file contents that are stored in the ObjectStore as well as their
corresponding filesystem path relative to the ObjectStore is tracked.

Signed-off-by: Erik Bernoth <erik.bernoth@gmail.com>
clean-up

 * update .gitignore
 * improve test function naming in comments for better test output reading
 * cleanup file comments