Huge commit, but I fixed the packaging and dependency structure of the codebase. "go get" should work fine now.

This is a huge commit that fixes the packaging and dependency structure of the codebase. "go get" should work fine now.

__Note:__ I've signed the CLA.