Initial commit with some functional protobufs and a bit of Python

I really should have committed the protobufs this weekend after writing
them, but I made some changes this week anyway. Please note that I
mostly haven't even run this code, let alone it being stable, usable,
etc. I don't even have tests for what I have written (bad Alex!), but I
wanted to create a bit of the higher level structure before writing
tests, one thing led to another, and I wrote quite a bit of logic
in the relationship setter. Once I have some more idea of whether my
project structure is even close to right, I'll put some tests in there,
I promise. I won't tag a release until I've got >80% test coverage, and
1.0 will have to wait for 100% coverage, preferably with more than just
unit tests.