Levelization: source code structure

This de-tangles dependencies:
* basics/ no longer depends on any other modules
* crypto/ depends only on basics/
* protocol/ depends only on basics/ and crypto/

Reviewers: @scottschurr @mtrippled 
Curious.  I see this file added by the commit, but I expected to see a corresponding deleted file from  the `types` directory.  I'm not seeing that deleted file in the commit.  Did I miss something?

I verified that nothing of consequence changed when the file moved.