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 
It can and *should* be: if `base_uint` internals were changed, such calls could break. And while here, `sizeof (root)` should become `root.size ()`.