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 
Consider
    `static std::size_t const pubGenSize = 33;`
    `assert(pubGen.size() == pubGenSize);`
We'll re-use pubGenSize in a couple of lines.