Refactor the project into separate files and add features.

Move the observer code down to the C++ level where it can be implemented
much more efficiently. Update the metaclass to handle static observer
registration. Add support for static observers to Member.

A C++ compiler is now required.